一、合并数据集
pandas对象数据通过pd.merge合并关系型数据,实现的是数据库连接操作;pd.concat可以沿着一条轴将多个对象堆叠到一起;实例方法combine_first可以将重复数据编接在一起,用一个对象的值填充另一个对象的缺失值。
1、数据库风格的DataFrame合并
该合并方式是通过一个或多个键将行链接起来。
df1=DataFrame({‘key‘:[],‘data1‘:[]});df2=DataFrame({‘key‘:[],‘data2‘:[]})
合并:pd.merge(df1,df2,on=‘key‘,how=‘inner‘)其中参数on显示指定用哪一列(多个列名组成的列表作为组合键)作为键进行连接,若没有指定,将重叠列列名当做键(列名不同可以用left_on/right_on分别指定),多对多产生的是行的笛卡尔积;参数how表示连接方式,包括内连接(inner)、外连接(outer)、左连接(left)、右连接(right),默认为内连接。suffixes选项用于指定附加到左右两个对象的重叠列名上的字符串。
2、索引上的合并
若DataFrame的连接键位于索引,pd.merge可以传入left_index=True或right_index=True(或两个都传)说明索引应该被用作连接键。
DataFrame还有一个join实例方法,更方便的实现按索引合并。left.join(right,on=‘key‘,how=‘outer‘),默认是左连接,right还可以是一组DataFrame,[right,another]。
3、轴向连接
也被称作连接、绑定或堆叠。
(1)合并numpy数组的concatenation函数。np.concatenate([arr,arr],axis=1),axis=1是列,3*4->3*8;axis=0,3*4->6*4。
(2)合并pandas对象的concat函数。pd.concat([s1,s2,s3],axis=1),axis=1是列,默认axis=0。默认为外连接(并集),传入参数join=‘inner‘ 即可得到交集。通过参数join_axes指定要在其他轴上使用的索引;使用keys参数在连接轴上创建层次化索引,若沿着axis=1合并,则其会成为DataFrame的列头;若传入的是字典,则键值会被当做keys选项的值;若要忽视行索引,则传入参数ignore_index=True。
4、合并重叠数据
(1)利用np.where(c,a,b)来选择a值还是b值。
(2)combine_first用参数对象中的数据为调用者对象的缺失数据打补丁。
二、重塑和轴向旋转
重新排列表格型数据的基础运算。
1、重塑层次化索引
stack:将数据的列“旋转”为行;unstack:将数据的行“旋转“为列。
默认情况stack/unstack操作的是最内层,传入分层级别的编号或名称即可对其他级别进行操作。unstack操作可能会引入缺失数据,stack默认会滤除缺失数据。作为旋转轴的级别将会成为结果中的最低级别。
2、将“长格式”旋转为“宽格式”
DataFrame的pivot方法实现该转换,pivoted=df.pivot(‘data‘,‘item‘,‘value‘),前两个参数分别用作行和列索引的列名,最后一个参数是用于填充数据列的列名。若有两个参与重塑的数据列,则结果会带有层次化的列。pivot是一个快捷方式:用set_index创建层次化索引,再用unstack重塑(unstacked=df.set_index([‘data‘,‘item‘]).unstack(‘item‘)。
三、数据转换
以上都是数据的重排,下面介绍过滤、清理及其他转换工作。
1、移除重复数据
DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行;DataFrame的drop_duplicates方法返回一个移除了重复行的DataFrame,这两个方法默认判断全部列;可以指定部分列进行重复项判断。默认保留第一个出现的值组合;传入take_last=True,则保留最后一个。
2、利用函数或映射进行数据转换
Series的map方法可以接受一个函数或含有映射关系的字典型对象。用于增加一列有与前面的列有对应关系的新列。
3、替换值
利用replace方法,可以替换一个值或者一个由待替换值组成的列表。
4、重命名轴索引
(1)轴标签也有一个map方法。
(2)利用rename方法。
5、离散化和面元划分
利用pandas的cut函数。例如将年龄划分为不同的年龄组。cats=pd.cut(ages,bins)返回对象含有labels和levels属性,默认区间左开右闭,通过参数right=False进行修改为左闭右开。如果bins传入的是面元数量不是边界列表,则根据数据的最小值和最大值计算等长面元。
qcut函数使用的是样本分位点,可以得到大小基本相等的面元(各个区间数据的数量相差不大)。
6、检测和过滤异常值
7、排列和随机采样
利用numpy.random.permulation进行随机重排序,再利用take方法按新顺序采样。
8、计算指标/哑变量
利用pandas的get_dummies函数实现:DataFrame的某一列含有k个不同值,可以派生出一个k列矩阵或DataFrame。
四、字符串操作
1、字符串对象方法
2、正则表达式
3、pandas中矢量化的字符串函数
原文:https://www.cnblogs.com/zhenpengwang/p/10769725.html