Pandas
2021-03-12 11:43:04 0 举报
AI智能生成
pandas数据分析思维导图
作者其他创作
大纲/内容
数据合并
行合并
df3.join(df4,how='left')默认是left左连接,以左侧df3为基础
df3.join(df4,how='right') 右连接
df3.join(df4,how='outer') 外连接
列合并
merge(df1,df2) 左右对象中出现同名的列作为连接的键,且连接方式是how=’inner’
merge(df1,df2,on='列明') 指定列名合并
merge(df1,df2,how='left') 以左侧为准
merge(df1,df2,how='right') 以右侧为准
merge(df1,df2,how='outer') 所有
concat
纵向连接
横向连接
内连接
连接时创建层次索引
用字典的方式
时间序列
生成时间
date_range(start=, end=) 生成一段时间范围
freq:日期偏移量,取值为string, 默认为'D' ,
periods:固定时期个数,取值为整数或None;
closed参数选择是否包含开始和结束时间closed=None,left包含开始时间,不包含结束时间,right与之相反。
freq:日期偏移量,取值为string, 默认为'D' ,
periods:固定时期个数,取值为整数或None;
closed参数选择是否包含开始和结束时间closed=None,left包含开始时间,不包含结束时间,right与之相反。
应用:可以将时间作为索引
过滤时间
truncate(before = " ") before指定日期之前的值全部过滤出去,after指定日期之前的值全部过滤出去
获取时间
long_ts['2020']按年份获取;
long_ts['2020-05']按年份和日期获取;
long_ts['2020-05-01':'2020-05-06']切片获取;
between_time()返回位于指定时间段的数据集
移位日期
ts.shift(periods=2,fill_value=100,freq='D')
时间转换
pd.to_datetime(1554970740000,unit='ms') 时间戳转换, ms是毫秒级别
时间时区转换
tz_localize('UTC').tz_convert('Asia/Shanghai')
分组聚合
单列分组
groupby('列名')
多列分组
groupby(['name','Year']
聚合函数
mean 平均值,sum求和,std求中位数
实现聚合功能函数
认知
pandas基于numpy的一种工具
解决数据分析
Series
类似一种一维数组, Series数据类型可以被看作由1列数据组成的数据集
创建形式
Series(data,index=index) 可以不指定索引, 索引默认从0开始
从列表中创建
从字典中创建
to_dict()方法将DataFrame对象转换为字典
range生成
多层索引
index=[[A],[B]] A与B两个列表都为行索引
MultiIndex.from_arrays([class1,class2]) 特定结构多层索引
MultiIndex.from_product构造多层索引
属性
values内容
index索引
iteritems()索引和值对
索引下标 index指定
位置下标 默认从0开始
基本操作
切片:类似列表
重新赋值索引: reindex
丢弃指定项drop
运算
算数运算
+ - * /
对 Series 的算术运算都是基于 index 进行的。
我们可以用加减乘除(+ - * /)这样的运算符对两个 Series 进行运算,
Pandas 将会根据索引 index,对响应的数据进行计算,结果将会以浮点数的形式存储,以避免丢失精度。
如果 Pandas 在两个 Series 里找不到相同的 index,对应的位置就返回一个空值 NaN
我们可以用加减乘除(+ - * /)这样的运算符对两个 Series 进行运算,
Pandas 将会根据索引 index,对响应的数据进行计算,结果将会以浮点数的形式存储,以避免丢失精度。
如果 Pandas 在两个 Series 里找不到相同的 index,对应的位置就返回一个空值 NaN
numpy运算
布尔过滤
标量乘法
数学函数
DataFrame
DataFrame可以存在多列数据
创建形式
通过NumPy形式创建
通过字典形式创建 (行索引由index决定, 列索引由字典的键决定)
属性
shape 形状(行数,列数)
index.tolist() 行索引
columns.tolist() 列索引
dtypes()数据类型
ndim维度
values数值以二维ndarray形式返回DataFrame数据
info概览
基本操作
查询数据
浏览DataFrame行数据
head(n) 头n行
tail(n) 末尾n行
查询DataFrame列数据
df.['列索引'] 查看单列
df.[['列索引A','列索引B']] 查看多列
按标签索引查看
df.loc()
按位置索引查看
df.iloc()
按照某列索引排序
df.sort_values(by='列索引',ascending=False) 默认升序
修改index和column
重新构建df.index=[]
rename 通过自定义test_map()方法改名
rename(index=test_map, columns=test_map, inplace=False)
inplace:布尔值,默认为False。指定是否返回新的DataFrame。如果为True,则在原df上修改,返回值为None。
rename(index=test_map, columns=test_map, inplace=False)
inplace:布尔值,默认为False。指定是否返回新的DataFrame。如果为True,则在原df上修改,返回值为None。
rename 传入字典,为某个 index 单独修改名称 rename(index={'bj':'beijing'}, columns = {'a':'aa'})
set_index('S',drop=False) 指定某一列数据为行索引
set_axis(df1.iloc[0],axis=1,inplace=False) 指定某一行数据为列索引
添加数据
insert(index, obj) index :插入的索引位置。obj 要插入列表中的对象(列名)
insert(iloc,column,value) iloc:要插入的位置,colunm:列名,value:值
append(new, ignore_index=True) 最后一行新增, new为新值,ignore_index=False,表示不按原来的索引
concat([objs], axis,ignore_index) 合并DataFrame对象
删除数据
drop(lables,axis,inplace)
数据处理
过滤缺失值
dropna()过滤缺失值
isnull()/notnull() 缺失值/非缺失值布尔序列
dropna(how='all') 滤除全为NaN的数据
dropna(how='any') 只要有nan就删除
填充缺失值
fillna(常数) 用常数填充
fillna({0:10,1:20,2:30}) 用字典填充不同常数
fillna(df1.mean()) 填充平均值
fillna(method=" ",limit=" " , axis=" ")
method=” “改变插值方式:前面的值来填充ffill,后面的值来填充bfill ;
limit限制填充行数;
axis=” “修改填充方向
method=” “改变插值方式:前面的值来填充ffill,后面的值来填充bfill ;
limit限制填充行数;
axis=” “修改填充方向
移除重复数据
duplicated() 判断是否重复
drop_duplicates()去除重复行
指定列去除重复行
drop_duplicates(['A'],keep='last')保留重复行中的最后一行
0 条评论
下一页