列表增加,删除
append(),
尽量减少在列表中间修改,涉及大量复制会消耗内存,尽量在尾部删,增。
a=a+[],非尾部添加,实际是创建新列表,耗内存
expend(),
原地址尾部添加
expend([50,60]),不改变地址,适合两个列表对接
insert(索引,值) 元素插入指定位置,设计大量拷贝,地址不变
列表乘法 a=a*3
列表增加,删除
append(),
尽量减少在列表中间修改,涉及大量复制会消耗内存,尽量在尾部删,增。
a=a+[],非尾部添加,实际是创建新列表,耗内存
expend(),
原地址尾部添加
expend([50,60]),不改变地址,适合两个列表对接
insert(索引,值) 元素插入指定位置,设计大量拷贝,地址不变
列表乘法 a=a*3
pandas时间序列
现在我们有2015到2017年25万条911的紧急电话的数据,请统计出出这些数据中不同类型的紧急情况的次数,如果我们还想统计出不同月份不同类型紧急电话的次数的变化情况,应该怎么做呢?
为什么要学习pandas的时间序列
不管在什么行业,时间序列都是一种非常重要的数据形式,很多统计数据以及数据的规律也都和时间序列有着非常重要的联系
时间格式化
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
pandas数据重采样
指的是将时间序列从一个频率转化为另一个另一个频率进行处理的过程,将高频率数据转化为低频率为降采样,低频率转化为高频率为升采样
关于索引和复合索引
merge——进行列合并,合并的是相同索引值得列默认的方式是inner,取交集,当没有相同的数的时候取空
思考:对于一组电影数据,如果要对这些数据进行分类,应该如何操作?
首先,先构一个二维数组,行数等于gener_list的数据量,即取出来genre这一列的数据,通过逗号进行分割,即将每一行数据分割出来一二维数据的形式返回列表中
df["Genre"].str.split(",").tolist()
然后将这个list里面的数据都转换为一维数组且去重
再构建一个新的二维数组,最初的值都为零,行是genre 的数据量,列表是一维数组的数据量,分类最为列索引
字符串的方法
pandas里面计算mean()时,可以直接跳过nan,来返回其他值得平均数
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
pandas的索引
DataFrame的基本属性
为什么要学习pandas?
numpy处理数值型数据;pandas用来处理字符串和时间序列等
pandas的常用数据类型
(1)series——一维、带标签的数组
(2)DataFrame——二维数组
生成随机数的方法
ndarray缺失值填充均值
numpy 中的nan 和 inf
nan:not a number表示不是一个数字
当我们读取本地的文件为float时,如果有缺失,就会出现nan,当做了一个不合适的计算的时候也会出现nan(比如无穷大inf减去无穷大)
特殊属性:(1)两个nan是不相等的;(2)np.nan != np.nan;(3)利用以上特性,判断数组中nan的个数;(4)通过np.isnan(t)来判断nan有几个;(5)nan跟任何一个数进行计算都是nan
在一组数据中单纯将nan替换为0并不合适,很多时候会把缺失值替换成均值(中值)或者直接删除有缺失值的一行。
求和:t.sum(axis=None)
均值:t.mean(axis=None) 受离群点的影响较大
中值:np.median(t,axis=None)
最大值:t.max(axis=None)
最小值:t.min(axis=None)
极值:np.ptp(t,axis=None) 即最大值和最小值只差
标准差:t.std(axis=None)
inf:表示真无穷;-inf表示负无穷
什么时候出现inf或-inf?比如一个数字除以0
numpy中数值的修改
numpy中布尔索引
numpy中三元运算符
numpy中的clip(裁剪)
numpy索引和切片
轴:
在numpy中可以理解为方向,使用0,1,2...数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴
二维数组的轴:
三维数组的轴:
numpy读取数据
csv:逗号分割值文件
numpy中的转置
转置是一种变换,对于numpy中的数组来说,就是对角线方向交换数据,目的也是为了更方便处理数据
转置方法:(1)transpose();(2)T;(3)swapaxes(1,0)
数组的形状
数组的计算
广播原则
如果两个数的后缘维度(即从末尾开始算起的维度)的轴长度相符或者其中一方的长度为1则认为它们是广播兼容的、广播会在确实和(或)长度为1的维度上进行
什么是numpy?
numpy是用来帮我们处理数值型数据的模块,躲在大型、多维数组上执行数值运算
为什么要学习numpy?
(1)快速
(2)方便
(3)科学计算的基础库