pd常用的方法

1.pd.get_dummies

用get_dummies方法实现分类属性的one-hot编码,编码之后不保留分类属性的有序性。

#'Title',"Sex", "Cabin", "Embarked"这四个分类属性进行了one-hot编码编码
df_train_encoding = pd.get_dummies(df_train[['Title',"Sex", "Cabin", "Embarked"]]) #df_train_encoding还是DataFrame类型

得到的格式

   Title_Dr  Title_Master  Title_Miss  Title_Mr  Title_Mrs  Sex_female  \
0         0             0           0         1          0           0   
1         0             0           0         0          1           1

2.dataframe数据连接的方式(merge, concat)

①merge

两个dataframe的按连接起来

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, sort=False, suffixes=('_x', '_y'))

参数含义:

left与right:两个不同的DataFrame

how:指的是合并(连接)的方式有inner(内连接),left(左外连接),right(右外连接),outer(全外连接);默认为inner

on : 指的是用于连接的列索引名称。必须存在左右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键

left_on:左则DataFrame中用作连接键的列名,这个参数中左右列名不相同,但代表的含义相同时非常有用。

right_on:右则DataFrame中用作连接键的列名

sort:默认为True,将合并的数据进行排序。设置为False可以提高性能

suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x','_y')

df1 = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})
df2 = pd.DataFrame({'a':[1,2,3],'b':[7,8,9]})
df = pd.merge(df1, df2, on = 'a', how = 'inner')

    a    b_x    c    b_y
0    1    4    7    7
1    2    5    8    8
2    3    6    9    9

②pd.concat

将多个dataframe对象根据不同的轴进行连接。

pd.concat([df1,.., dfn], axis=0, join='outer', ignore_index=False)

ignore_index = True:重建索引

axis = 0, 按行连接,等价于df1.append(df2)

df1 = pd.DataFrame({'a':[3,2,1],'b':[4,5,6],'c':[7,8,9]})
df2 = pd.DataFrame({'a':[3,2,1],'b':[7,8,9],'c':[7,8,np.nan]})
df = pd.concat([df1,df2], axis=0,ignore_index = True)

    a    b    c
0    3    4    7.0
1    2    5    8.0
2    1    6    9.0
3    3    7    7.0
4    2    8    8.0
5    1    9    NaN

axis = 1, 按列连接

与merge的区别在于用于合并的key还保留着

df = pd.concat([df1,df2], axis=1)

     a    b    c    a    b    c
0    3    4    7    3    7    7.0
1    2    5    8    2    8    8.0
2    1    6    9    1    9    NaN

3.pd.melt

该方法可以将列名变为表中的数值。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(12).reshape(3,4),index=['AA','BB','CC'],columns= ['A','B','C','D'])
print(df)
f=pd.melt(df,id_vars=['D'],value_vars=['A','B'],var_name='name',value_name='value')
print(f)

结果:
    A  B   C   D
AA  0  1   2   3
BB  4  5   6   7
CC  8  9  10  11
    D name  value
0   3    A      0
1   7    A      4
2  11    A      8
3   3    B      1
4   7    B      5
5  11    B      9

4.pd.drop

去除某行或某列,默认axis=0是删除行

df.drop('col_name',axis=1,inplace=True) #删除列,且直接改变df

5.文件的读写

train_data=pd.read_csv('train.csv') #读取文件,返回是dataframe类型
train_data.to_csv('train.csv',index=False) #写文件,index=False表示不需要将index输出到文件

6.pd.pivot和pd.pivot_table

pd.pivot函数是基于原有的dataframe创建一个新的表。有3个参数:index,columns和values。

如果原始的表中存在重复的数据,则pivot函数会出错。原因如下:

pd.pivot_table函数可以处理这种重复的情况,比pivot函数多了一个参数:aggfunc,用来指明转换时如何处理,默认是取“均值”。

对于字符串的数据,采用拼接各个值的方法。代码如下:

feature_data=part_1_2.pivot_table(index='vid', columns='table_id', values='field_results',aggfunc=lambda x: '#'.join(str(v) for v in x))

results matching ""

    No results matching ""