目录
1 pandas数据结构
(0)Series
(1)DataFrame
2 pandas索引操作
(0)设置索引
(1)更换索引
(2)索引和选取(切片仅用于选取行)
1.Series对象选取数据元素
2.DataFrame对象选取数据元素
(3)操作行和列(基本操作就是“增、删、改、查”)
1.增加
2.删除
3.修改
3 pandas数据运算
(0)算术运算
(1)自定义函数应用和映射
(2)排序
(3)汇总与统计
(4)唯一值与值统计
(5)DataFrame的分组数据聚合
(6)DataFrame的串联与附加操作
(7)DataFrames的表连接连接
(8)处理缺失值
(9)处理日期数据
(10)数据透视表
4 层次化索引
5 pandas可视化图表
6 综合练习—小费数据集
类似一维数组,但它由一组数据(Numpy数据类型)和一组对应的索引组成(索引默认为从0开始的序号)
1.通过字典创建Series对象
2.指定索引并通过索引取值
3.给Series对象和索引指定name属性
由于DataFrame是表格型数据,因此无论是创建的数据还是外部数据,首先想到的应该是如何将数据转换为DataFrame对象。
1.通过字典创建DataFrame对象
2.通过columns属性指定DataFrame列索引的排列顺序
3.通过嵌套字典创建DataFrame
4.通过二维列表或二维Numpy矩阵创建DataFrame
5.通过Series创建DataFrame
将Series合并为字典。在字典中,每个Series对象都被当作列。
将Series合并为列表。在列表中,每个Series对象都被当作行。
Series的索引和DataFrame的行和列索引都是索引对象,负责管理轴标签和元数据。
1.Series设置索引------obj.reindex(新排序索引列表)
2.DataFrame设置索引------df.reindex(list)【设置行索引】------df.reindex(columns=list)【设置列索引】
reindex参数类型 |
说明 |
index |
用于索引新序列 |
method |
设置填充值方法,ffill,bfill, nearest(必须是数值索引) |
fill_value |
设置填充值 |
limit |
最大填充个数(可以不填满) |
1.列数据作为行索引------df.set_index(‘某列索引’)
2.重置索引-------df.reset_index()
3.排序后重置索引,显示位序
(1)下标、索引标签------obj[1]------obj[ ['a','c'] ]
(2)下标切片不包含尾端、索引标签切片包含尾端------obj[0:2]------obj['a':'c']
(1)选取列------(标签单列)df.['city']------(标签多列)df.[ ['city',''name'] ]------(属性单列)df.name
(2)选取行-------df.loc[行索引标签]-------df.iloc[行索引位置]
(3)同时选取行和列
1.使用ix同时选取行和列的子集。ix同时支持索引标签和索引位置。
选取行和列在子集。语法:ix[行索引序列, 列索引序列]
选取行或者列。语法:选取行 ix[行索引序列, :],选取列ix[:, 列索引序列]
2.使用loc[行索引标签序列, 列索引标签序列];选取行或者列
语法:选取行 loc[行索引标签序列, :],选取列ix[:, 列索引序标签列]
3.使用iloc[行索引位置序列,列索引位置序列];选取行或列
语法: iloc[行索引位置序列,:], iloc[:,列索引位置序列]
(4)布尔选择
布尔条件运算:非~,与&,或|。 逻辑关系运算:==,!=,>,>=,<,<=。
(1)增加行
DataFrame对象:df.append(new_data, ignore_index=True) 或df.append(Series对象)
Series对象:s[‘新索引’]=value。
(2)增加列
添加一列相同的值。语法: df[new_col]=value------表示这列都是相同值
添加一列数组。语法: df[new_col]=['列表']
df.drop( 索引, axis)------行(axis=0)、列(axis=1)
修改行或列索引标签------df.rename(index={r_ori1:r_new1, r_ori2:r_new2,…}
修改元素值(先通过ix,loc,或者iloc选择元素然后赋值)
(1)赋予相同元素值;(2)赋予相同行;(3)赋予相同维度矩阵。
Series算术运算
DataFrame算术运算
map方法将函数应用于Series对象的每个元素上。
apply方法将函数应用于DataFrame对象的行或列上。
applymap方法应用于DataFrame对象的每个元素上。
Series对象
obj.sort_index(ascending)
DataFrame对象
obj.sort_index(axis,by, ascending)
通过sum函数对每列或每行求和汇总
Series通过unique()接口方法计算唯一值。语法:obj.unique()
Series通过value_counts()接口方法计算值统计。语法:obj.value_counts()
DataFrame的行和列都是Series对象,可以计算每行每列的唯一值与值统计。
使用聚合可以将各行或各列数据进行分组,进而可以实现每组数据上的不同操作
DataFrame串联。语法:pd.concat([df1, df2])。要求df1与df2必须有相同列类型。
DataFrame附加。语法:df1.append(df2)。要求df1与df2必须有相同列类型。
使用merge进行内部连接,使用how比on更直观
使用merge进行外连。不存在的值补NaN。
检查缺失值。使用pandas的isnull() 检查缺失值
通过fillna()方法用一个标量值(如0)替换缺失值
pd.to_datetime((['19021112','19031230'],format='%Y%m%d'))
日期字符串转换成日期数据。当字符串无法转换时报错
pd.pivot_table(df , columns=[''], aggfunc=np.fun)
设置aggfunc参数,可以让这个聚合函数执行Numpy中诸如sum()之类的函数。
设置参数columns用来告诉Pandas要对哪些列进行聚合。