Pandas常用功能
来源:互联网 发布:淘宝店铺音乐链接地址 编辑:程序博客网 时间:2024/06/06 10:57
- 重新索引
- 丢弃指定轴上的项
- 索引选取和过滤
- 算术运算
- 填充缺失值
- 算术方法
- ufuns
- 排序和排名
- sort_index
- rank
- 汇总和计算描述统计
- 约简方法
- 描述和汇总
- 唯一值值计数以及成员资格
- 处理缺失值
- 层次化索引
- 内外层数据选取
- 数据重塑
- 重排分级顺序
- 根据级别汇总统计
重新索引
reindex基本用法
obj = Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])>> objd 4.5b 7.2a -5.3c 3.6obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'], fill_value=0)>> obj2a -5.3b 7.2c 3.6d 4.5e 0.0obj3 = Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])obj3.reindex(range(6), method='ffill')>> obj30 bule1 bule2 purple3 purple4 yellow5 yellow
reindex修改索引(行)、列、或同时修改
frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'], columns=['Ohio','Texas','California'])>> frame Ohio Texas Californiaa 0 1 2c 3 4 5d 6 7 8# 仅传入一个序列,会重新索引行frame2 = frame.reindex(['a', 'b', 'c', 'd'])>> frame2 Ohio Texas Californiaa 0 1 2b NaN NaN NaNc 3 4 5d 6 7 8# 使用columns关键字,重新索引列states = ['Texas', 'Utha', 'California']frame3 = frame.reindex(columns=states)>> frame3 Texas Utha Californiaa 1 NaN 2c 4 NaN 5d 7 NaN 8# 同时对行列重新索引,但插值只能按行应用(轴0)frame4 = frame.reindex(index=['a', 'b', 'c', 'd'], method='ffill', columns=states)>> frame4 Texas Utha Californiaa 1 NaN 2b 1 NaN 2c 4 NaN 5d 7 NaN 8# ix的标签索引功能>> frame.ix[['a', 'b', 'c', 'd'],states] Texas Utha Californiaa 1 NaN 2b NaN NaN NaNc 4 NaN 5d 7 NaN 8
reindex函数的参数
丢弃指定轴上的项
# 删除任意轴上索引,axis指定轴data = DataFrame(np.arange(16).reshape((4, 4)), index=['Ohio', 'Colorado', 'Utha', 'New York'], columns=['one', 'two', 'three', 'four'])>> data.drop(['Colorado', 'Ohio']) one two three fourUtah 8 9 10 11New York 12 13 14 15>> data.drop(['two', 'four'], axis=1) one threeOhio 0 2 Colorado 4 6Utah 8 10New York 12 14
索引、选取和过滤
data = DataFrame(np.range(16).reshape((4, 4)), index=['Ohio', 'Colorado', 'Utah', 'New York'], columns=['one', 'two', 'three', 'four'])>> data one two three fourOhio 0 1 2 3Colorado 4 5 6 7Utah 8 9 10 11New York 12 13 14 15# obj[val]>> data[['three', 'one']] three oneOhio 2 0Colorado 6 4Utah 10 8New York 14 12>> data[:2] one two three fourOhio 0 1 2 3Colorado 4 5 6 7>> data[data['three'] > 5] one two three fourColorado 4 5 6 7Utah 8 9 10 11New York 12 13 14 15# obj.ix[val]>> data.ix['Colorado', ['two', 'three']]two 5three 6Name: Colorado>> data.ix[['Colorado', 'Utah'], [3, 0, 1]] four one two Colorado 7 4 5 Utah 11 8 9 >> data.ix[2]one 8two 9three 10four 11Name: Utah
DataFrame的索引选项
算术运算
pandas一个重要功能是,可以对不同索引的对象进行算术运算,对象相加时如果存在不同的索引对,则结果的索引就是该索引对的并集
df1 = DafaFrame(np.arange(9).reshape((3, 3)), columns=list('bcd'), index=['Ohio','Texas','Colorado'])df2 = DafaFrame(np.arange(12).reshape((4, 3)), columns=list('bde'), index=['Utah', 'Ohio','Texas','Colorado'])>> df1 b c dOhio 0 1 2Texas 3 4 5Colorado 6 7 8>> df2 b d eUtah 0 1 2Ohio 3 4 5Texas 6 7 8Oregon 9 10 11>> df1 + df2 b c d eColorado NaN NaN NaN NaNOhio 3 NaN 6 NaNOregon NaN NaN NaN NaNTexas 9 NaN 12 NaNUtah NaN NaN NaN NaN
1. 填充缺失值
>> df1.add(df2,fill_value=0) b c d eColorado 6 7 8 0Ohio 3 1 6 5Oregon 9 0 10 11Texas 9 4 12 8Utah 0 0 1 2
2. 算术方法
ufuns
Numpy的ufuns(元素级数组方法)也可用于操作pandas对象
# 求绝对值>> np.abs(df1) b c dOhio 0 1 2Texas 3 4 5Colorado 6 7 8# apply方法f = lambda x: x.max() - x.min()>> df1.apply(f)b 6c 6d 6>> df1.apply(f, axis=1)Ohio 2Texas 2Colorado 2# 传递给apply的函数可以返回由多个值组成的seriesdef f(x): return Series([x.min(), x.max()], index=['min', 'max'])>> df1.apply(f): b c dmin 0 1 2max 6 7 8# applymap方法# 得到dataframe中各个浮点值的格式化字符串format = lambda x: '%.2f' % xframe.applymap(format)
排序和排名
1. sort_index
frame = DataFrame(np.arange(8).reshape((2, 4)), index=['two', 'one'], columns=['d', 'a', 'b', 'c'])# 默认对行index排序>> frame.sort_index() d a b cone 4 5 6 7two 0 1 2 3# 设置axis对columns排序>> frame.sort_index(axis=1) a b c dtwo 1 2 3 0one 5 6 7 4# 默认升序排序,设置降序frame.sort_index(axis=1, ascending=False)# 根据一个或多个列的中的值进行排序frame.sort_index(by='b') d a b ctwo 0 1 2 3one 4 5 6 7
2. rank
obj = Series([7, -5, 7, 4, 2, 0, 4])>> obj.rank()0 6.51 1.02 6.53 4.54 3.05 2.06 4.5>> obj.rank(method='first')0 61 12 73 44 35 26 5# 降序排obj.rank(ascending=False, method='max')# 在列计算排名obj.rank(axis=1)
排名时用于破坏平级关系的method选项
汇总和计算描述统计
1. 约简方法
>> df one twoa 1.4 NaNb 7.1 -4.5c NaN NaNd 0.75 -1.3# 按列求和>> df.sum()one 9.25two -5.8# 按行求和>> df.sum(axis=1)a 1.4b 2.6c NaNd -0.55# Na值会被自动排除,除非整个切片都是Na,skipna选项可以禁用该功能>> df.mean(axis=1, skipna=False)a NaNb 1.300c NaNd -0.275
约简方法的选项
2. 描述和汇总
# 达到最小值或最大值的索引>> df.idxmax()one btwo a# 累计型>> df.cumsum() one twoa 1.4 NaNb 8.5 -4.5c NaN NaNd 9.25 -5.8# describe>> df.describe() one twocount 3.000000 2.000000mean 3.083333 -2.900000std 3.493685 2.262742min 0.750000 -4.500000max 7.100000 -1.300000
描述和汇总统计
3. 唯一值、值计数以及成员资格
obj = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])# 唯一值>> obj.unique()array([c, a, d, b], dtype=object)# 值计数>> obj.value_counts()c 3a 3b 2d 1# 判断矢量化集合的成员资格>> obj.isin(['b', 'c'])0 True1 False2 False3 False4 False5 True6 True7 True8 True
处理缺失值
from numpy import nan as NAdata = DataFrame([[1, 6.5, 3], [1, NA, NA], [NA, NA, NA],[NA, 6.5, 3]])cleaned = data.dropna()>> data 0 1 20 1 6.5 31 1 NaN NaN2 NaN NaN NaN3 NaN 6.5 3>> cleand 0 1 20 1 6.5 3# how=all 丢弃全为Na的行>> data.dropna(how='all') 0 1 20 1 6.5 31 1 NaN NaN3 NaN 6.5 3# thresh>> data.dropna(thresh=3) # 一行中有3个值非空,就保留 0 1 20 1 6.5 3# fillna>> data.fillna(0) 0 1 20 1 6.5 31 1 0 02 0 0 03 0 6.5 3# 对不同列填充不同值>> data.fillna({1: 0.5, 2: -1}) 0 1 20 1 6.5 31 1 0.5 -12 NaN 0.5 -13 NaN 6.5 3# method='ffill'>> data.fillna(method='ffill', limit=2) 0 1 20 1 6.5 31 1 6.5 32 1 6.5 33 1 6.5 3>> data.fillna(data.mean())
fillna函数的参数
层次化索引
1. 内外层数据选取
data = Series(np.random.randn(10), index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])>> dataa 1 0.670216 2 0.852965 3 -0.955869b 1 -0.023493 2 -2.304234 3 -0.652469c 1 -1.218302 2 -1.332610d 2 1.074623 3 0.723642>> data['b']1 -0.0234932 -2.3042343 -0.652469>> data.ix[['b', 'd']]b 1 -0.023493 2 -2.304234 3 -0.652469d 2 1.074623 3 0.723642# 在内层选取>> data[:, 2]a 0.852965b -2.304234c -1.332610d 1.074623
2. 数据重塑
>> data.unstack() 1 2 3a 0.670216 0.852965 -0.955869b -0.023493 -2.304234 -0.652469c -1.218302 -1.332610 NaNd NaN 1.074623 0.723642>> data.unstack().stack()a 1 0.670216 2 0.852965 3 -0.955869b 1 -0.023493 2 -2.304234 3 -0.652469c 1 -1.218302 2 -1.332610d 2 1.074623 3 0.723642
3. 重排分级顺序
有时需要重新调整某条轴上各级别的顺序,或根据指定级别上的值对数据进行排序。
swaplevel接受两个级别编号或名称,并返回一个互换了级别的新对象。
frame = DataFrame(np.arange(12).reshape((4, 3)), index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]], columns=[['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']])frame.index.names = ['key1', 'key2']frame.columns.names = ['state', 'color']>> framestate Ohio Coloradocolor Green Red Greenkey1 key2 a 1 0 1 2 2 3 4 5b 1 6 7 8 2 9 10 11>> frame.swaplevel('key1', 'key2')state Ohio Coloradocolor Green Red Greenkey2 key1 1 a 0 1 22 a 3 4 51 b 6 7 82 b 9 10 11# sortlevel根据单个级别中的值对数据排序>> frame.sortlevel(1)state Ohio Coloradocolor Green Red Greenkey1 key2 a 1 0 1 2b 1 6 7 8a 2 3 4 5b 2 9 10 11>> frame.swaplevel(0, 1).sortlevel(0)state Ohio Coloradocolor Green Red Greenkey2 key1 1 a 0 1 2 b 6 7 82 a 3 4 5 b 9 10 11
4. 根据级别汇总统计
>> frame.sum(level='key2')state Ohio Coloradocolor Green Red Greenkey2 1 6 8 102 12 14 16>> frame.sum(level='color', axis=1)color Green Red key1 key2 a 1 2 1 2 8 4 b 1 14 7 2 20 10
阅读全文
0 0
- pandas常用功能整理
- Pandas常用功能
- pandas小记:pandas高级功能
- python-pandas功能大全
- Pandas基础功能备忘录
- pandas常用操作
- pandas常用的方法
- Pandas常用操作
- pandas 常用函数
- python~pandas常用代码
- Pandas常用操作
- pandas 常用操作
- Pandas常用笔记
- pandas常用函数
- pandas常用函数
- Python-pandas常用函数
- pandas 常用统计方法
- pandas常用语法小结
- JSON的三种解析方式以及JSONObject、JSONArray区别
- 使用clipboard.js实现移动端粘贴复制
- 17级研究生第一年
- leetcode 231. Power of Two 神奇的位操作
- codeforces 855A 模拟
- Pandas常用功能
- Socket理论知识
- PHP中使用CKEditor上传图片
- swift 开发UIWebView跟JS的交互
- .git 获取git中代码漏洞修复
- element-ui el-upload 文件上传 解读
- 选择排序
- python之sys模块详解
- Xcode9适配