Pandas速查中文手册
导包
import pd as pandas
创建pandas对象(Series | DataFrame | Index)
创建Series
pd.Series(data,index = index)
创建DataFrame
pd.DataFrame(Series,columns=['population'])pd.DataFrame({'A':Series1,'B':Series2})pd.DataFrame([{'a':1,'b':2},{'c':1,'d':2}])pd.DataFrame(np.random.rand(3,2),columns=['foo',bar],index=['a','b','c'])
创建Index
pd.Index([1,2,3,4,5])
取值和选择
Series:
显示
data['index']
增加新扩展
data['newindex'] = newdata
显示切片
data['a':'b']
隐式切片
data[0:2]
显示索引
data.loc['a']
隐式索引
data.iloc[1:3]
DataFrame:
取一列带索引->取一列Series
fdata['colA']
新增一列->增加一列Series
fdata['col_add'] = fdata['B'] / fdata['A']
按行查看数据
fdata.values
转置数据
fdata.T
取单个行索引获取一行数据
fdata.values[0]
隐式索引
fdata.iloc[:3,:2]
显示索引
fdata.loc[:'col1',:'col2']
Pandas数值运算
通用函数保留索引
索引对齐
缺失数据NaN填充
缺失值处理
numpy中
None->object对象,比其他原生类型数组消耗更多资源。 没有定义整数与None之间的加法运算。
NaN->与接触的数据同化pandas中
None和NaN可以看作等价交换是否存在缺失值
data.isnull()
是否不存在缺失值
fdata.notnull()
可作为索引使用
fdata[fdata.notnull()]
返回一个填充了缺失值的副本
fdata.fillna()
剔除缺失值
fdata.dropna() 默认剔除整行fdata.dropna(axis='columns')how或thresh 设置缺失值的数量阈值 ,参数如: all / any / thresh=3fdata.dropna(axis='columns',how=any)
填补缺失值
data.fillna(0)
向后填充NaN
data.fillna(method='ffill')
向前填充NaN
data.fillna(method='bfill')fdata.fillna(method='ffill',axis=1)
层级索引
创建多级索引
index = [('a',1),('b',1),('c',2),('d',2)]index = pd.MutiIndex.from_tuples(index)
索引重置,增加多级索引
data.reindex(index)
多级索引的Series转为普通索引的DataFrame
fdata=data.unstack()stack()效果相反
多级索引创建
显式创建多级索引
pd.MultiIndex.from_arrays(['a','a','b','b'],[1,2,1,2])pd.MultiIndex.from_tuples([('a',1),('a',2),('b',1),('b',2)])pd.MultiIndex.from_product([['a','b'],[1,2]])pd.MultiIndex(levels=[['a','b'],[1,2]],labels=[[0,0,1,1],[0,1,0,1]])
多级索引名称
data.index.names= ['state','year']
多级列索引
- 构造index结构与上多级索引相同
创建dataframe对象时将其传入
columns=pd.MultiIndex.from_product([['a','b'],[1,2]],names=['x','y'])pd.DataFrame(fdata,index=index,columns=columns)
多级索引的取值和切片
series取值和切片
取单个元素
data['a',2000]
局部取值(带低级索引的新Series)
data['a']
局部切片(要求multiIndex排序)
data['a':'c']
只用低级索引取值
data[:,2000]
布尔掩码取值
data[data>10]
花哨取值
data[['a','c']]
dataframe用法和Series类似
fdata['x','y']
推荐取值用法
idx = pd.IndexSlice
索引先行后列
fdata.loc[idx[:,1],idx[:,'HR']]
多级索引行列转换
局部切片需要multiIndex 排序
data = data.sort_index()data['a':'b']
索引stack 与 unstack
通过level参数设置转换的索引层级
data.unstack(level=0)
索引的设置与重置
列名称
data.reset_index(name = 'pop')data.reset_index(['state','year'])
多级索引的数据累计方法
fdata.mean(level='index_nane')fdata.max(level='index_nane')
合并数据集 concat与append操作(简易合并操作)
ser1 ser2
pd.concat([ser1,ser2])
fdata1 fdata2
pd.concat([fdata1,fdata2],axis='col') 与axis = 1效果相同,默认为0 行
合并重复索引
pd.concat([x,y]) 合并保留索引哪怕重复。
捕捉重复索引
pd.concat([x,y],verify_integrity=True)
忽略索引 创建新的整数索引
pd.concat([x,y],ignore_index=True)
增加多级索引
pd.concat([x,y],keys=['x','y'])
类似join的合并
pd.concat([fdata1,fdata2],join='inner')
合并方式指定dataframe列
pd.concat([fdata1,fdata2],join_axes=[fdata1.columns])
append操作
fdata1.append(fdata2)
合并数据集:合并和连接
pd.merge()
一对一连接,多对一连接,多对多连接
pd.merge(fdata1,fdata2)
合并相同列名
pd.merge(fdata1,fdata2,on='column1')
合并不同列命
pd.merge(fdata1,fdata2,left_on="columns",right_on="name")
合并索引
pd.merge(fdata1,fdata2,left_index=True,right_index=True)
索引列混合x
pd.merge(fdata1,fdata2,left_index=True,right_on='column1')
设置数据连接的集合操作规则
内 外 左 右 连接
pd.merge(fdata1,fdata2,how='inner')pd.merge(fdata1,fdata2,how='outer')pd.merge(fdata1,fdata2,how='left')pd.merge(fdata1,fdata2,how='right')
重复列名
两dataframe 两个列命都为column1 column2,合并column1不合并column2pd.merge(fdata1,fdata2,on="column1",suffixes=["_L","_R"])
Pandas累计与分组
简单累计功能 属性axis 确定按行、列
fdata.mean(axis='columns')count() 计数项 first() last()第一和最后一项 mean() median()均值和中位数min() max() std()标准差 var()方差 mad()均值绝对偏差 prod()所有项乘积 sum()所有项求和
groupby
groupby分组当运行累计函数的时候才会开始计算,类似spark中rdd的transformation和action操作
按列取值,求中位数。fdata.groupby("按什么字段分组")['选取的一列'].median()
按组迭代,返回的每一组都是Series或者DataFrame
for(method,group) in planets.groupby('method'):print("{0:30s} shape={1}".format(method,group.shape))
调用方法
planets.groupby('method')['year'].describe().unstack()
累计、过滤、转换和应用
累计
fdata.groupby('key').aggregate(['min',np.median,max])fdata.groupby('key').aggregate({'data1':'min','data2':'max'})
过滤
def filter_func(x):return x['data2'].std() > 4fdata.groupby('key').filter(filter_func)
转换
fdata.groupby('key').transform(lambda x: x-x.mean())
apply()方法
在每个组上用任意方法
apply()可以在每个组上应用任意方法,比如某方法def norm_by_data2(x):......return x;fdata.groupby('key').apply(norm_by_data2)
自定义分割的键
将列表、数组、Series或索引作为分组键
L = [0,1,0,1,2,0]fdata.groupby(L).sum()
字典或Series将索引映射到分组名称
mapping={'A':'vowel','B':'con','C':'con'}fdata.groupby(mapping).sum()
任意python函数
fdata.groupby(str.lower).mean()
多个有效键构成的列表
fdata.groupby([str.lower,mapping]).mean()
pandas字符串方法列表
几乎所有的Python内置字符串方法都被赋值到pandas向量化字符串方法中,但返回值不同。
data.str.lower()data.str.len()
使用正则表达式的方法
data.str.extract('[A-Za-z]')
其他字符串操作
向量化字符串的取值和切片操作
data.str[0:3] 等价 data.str.slice(0,3)data.str.split().str.get(-1)
指标变量
分解成一个元素为0/1的类似数组fdata['info'].str.get_dummies('|')
pandas时间序列:用时间作索引
通过时间索引创建series对象可以用时间进行切片取值
data['2019-06-28':'2020-06-29']
pandas时间序列数据结构
时间戳数据:DateIndex
时间周期数据:PeriodIndex
时间增量或持续时间数据:TimedeltaIndex
任何DatetimeIndex 类型都可以通过to_period()方法和一个频率代码转换成PeriodIndex类型
data.to_period('D')
当一个日期减去另一个日期返回的结果是TimedeltaIndex类型
data - data[0]
有规律的时间序列
默认频率为D 天,可以修改成自己所需要
pd.date_range('2020-06-28','2020-06-29',freq='H')pd.date_range('2020-06-28',period=8,freq='H')pd.period_range('2020-06',period=8,freq='M')pd.timedelta_range(0,periods=10,freq='H')
时间频率与偏移量
pandas频率代码
天 周 月末 季末 年末 小时
D W M Q A H
以上前面加B 即为仅含工作日时间重新取样、迁移和窗口
重新取样与频率转换
数据累计为基础:resample()
数据选择为基础:asfreq()fdata.resample('BA').mean() 上一年均值fdata.asfreq('BA') 上一年最后一个工作日asfreq('D',method='bfill')
迁移
shift()迁移数据tshift()迁移索引fdata.shift(900)fdata.tshift(900)
时间窗口
data.rolling(365,center=True)
高性能pandas:eval()与query()
df.eval('各种运算')df.query('各种运算')
本文基于《Python数据科学手册》
个人学习使用
Pandas速查中文手册相关推荐
- python日记Ddy19——Pandas速查中文手册
python日记--Pandas中文备查手册 本文大部分内容转载自文章Pandas速查手册中文版,同时对部分内容进行了添加和修改. 导入数据 pd.read_csv(filename):从CSV.TS ...
- Pandas速查手册
本文转自<Pandas速查手册中文版> 对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非常重要的Python包.它不仅提供了很多方法,使得数据处理非常简单,同时在数据处 ...
- 脑动力:C语言函数速查效率手册(附DVD光盘1张) [平
脑动力:C语言函数速查效率手册(附DVD光盘1张) [平 本书全面.系统地介绍了C语言的库函数.C语言是基础的通用程序设计语言,许多语言都是从C语言基础上发展起来的,C语言库函数可以使编程更加高效便捷 ...
- 目前最新《脑动力 html+css标签速查效率手册[刘丽霞] 》
介绍: HTML是所有网页制作技术的核心和基础,也是每个网页制作者必须掌握的基本知识.CSS是用于控制网页内容显示效果的一种标记语言,可以制作更美观的页面.两者在网页设计中不可或缺. <脑动力: ...
- pandas速查手册(中文版)
本文翻译自文章:Pandas Cheat Sheet - Python for Data Science 对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非常重要的Python包.它 ...
- 这份中文pandas速查表,真不错!
今天给大家分享老曾制作的Pandas cheat sheet,直接看图⬇️ 小抄资料获取 关注左侧[python] 回复 20004 Pandas是一个强大的分析结构化数据的工具集:它的使用基础是Nu ...
- 首次公开,用了三年的 pandas 速查表!
导读:Pandas 是一个强大的分析结构化数据的工具集,它的使用基础是 Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析,同时也提供数据清洗功能. 本文收集了 Python 数据分析库 Pa ...
- 首次公开,用了三年的 pandas 速查表
Pandas 是一个强大的分析结构化数据的工具集,它的使用基础是 Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析,同时也提供数据清洗功能. 本文收集了 Python 数据分析库 Panda ...
- pandas 取excel 中的某一列_工作中常用的pandas速查
注:进行下面的操作前请先导入pandas模块: import pandas as pd 获取列名列表: cols 重新调整列的顺序(将data2的列顺序按data1的列顺序来调整,data1和data ...
- 脑动力:php函数速查效率手册,脑动力:PHP函数速查效率手册
目录 第1章 MySQL服务器函数 1.1 MySQL连接类函数 1.1.1 mysql_connect函数:打开MySQL服务器的非持久连接 1.1.2 mysql_pconnect函数:打开MyS ...
最新文章
- Linux 常用命令之系统信息
- Android移动开发之【Android实战项目】记一次app开发过程!
- Python 类的多态
- Linux中cat、more、less、tail、head命令的使用示例
- Subsequences (easy version)
- 简单概述 .NET Framework 各版本区别
- Python模块_re正则表达式模块-2
- css如何调整红心样式_条码软件如何调整条码数据的样式
- 技巧:如何从苹果Mac跟踪设备上所有电池的电量?
- Jquery一款非好的图片轮换效果
- 冰点文库下载器2021新版 v3.2.16
- 智能家居 (9) ——人脸识别摄像头安装实现监控功能
- 英语学习/词典App分析-团队作业(五)
- read和write阻塞和非阻塞方面的理解
- BeanUtils.populate方法使用
- PLSQL入门与精通(第72章:LOGOFF触发器)
- 标签系列二:spring 中bean解释以及bean标签里面的属性
- SkeyeRTSPLive传统视频监控互联网实现利器解决方案
- UE4如何使用Left Shift+W增加移动速度
- html5 u3m8,U3M8短语.doc
热门文章
- 中国游戏2022趋势报告:6大潜力领域4大发展趋势 多家企业分析
- vue-video-player 实现广告视频轮播和播放直播
- python暴力破解wps,Word,excel等文件
- Visual Studio中实用工具VAssistX
- (转载)vmware workstation14永久激活密钥分享
- topjui.core.js
- 华硕win10键盘失灵_华硕笔记本键盘失灵怎么办win10(Win10的键盘失灵解决办法)...
- 使用QT5 PrintSupport打印和预览标签
- mac pycharm汉化(附带汉化包)
- ISO50001认证辅导,这套新标准将取代主要着重实物资产管理的 PAS55系列标准