Python Pandas学习笔记之方法速查表

1-创建数据对象

表1 Pandas创建数据对象

方法用途示例示例说明
read_table
read_csv
read_excel
从文件创建数据框In: import pandas as pd In: data1 = pd.read_table(‘table_data.txt’,sep=’;’)读取table_data.txt文件,数据分隔符是;
DataFrame.from_dict
DataFrame.from_items
DataFrame.from_records
从其他对象例如Series、Numpy数组、字典创建数据框In: data_dict = {‘col1’: [2, 1, 0], ‘col2’: [‘a’, ‘b’, ‘a’], ‘col3’: [True, True, False]}In: data2 = pd.DataFrame.from_dict(data_dict)基于字典创建数据框,列名为字典的3个key,每一列的值为key对应的value值

2 查看数据信息

表2 Pandas常用查看数据信息方法汇总

方法用途示例示例说明
info查看数据框的索引和列的类型、费控设置和内存用量信息。In: print(http://data2.info())Out: <class ‘pandas.core.frame.DataFrame’>RangeIndex: 3 entries, 0 to 2Data columns (total 3 columns):col1 3 non-null int64col2 3 non-null objectcol3 3 non-null booldtypes: bool(1), int64(1), object(1)memory usage: 131.0+ bytesNone返回对象的所有信息
describe显示描述性统计数据,包括集中趋势、分散趋势、形状等。In: print(data2.describe())Out: col1count 3.0mean 1.0std 1.0min 0.025% 0.550% 1.075% 1.5max 2.0默认查看数值型列,使用include= ‘all’查看所有类型数据
dtype查看数据框每一列的数据类型In: print(data2.dtypes)Out: col1 int64col2 objectcol3 booldtype: objectt结果是Series类型
head查看前N条结果In: print(data2.head(2))Out: col1 col2 col30 2 a True1 1 b True从第一行开始取前2行
tail查看后N条结果In: print(data2.tail(2))Out: col1 col2 col31 1 b True2 0 a False从最后一行开始取后2行
index查看索引In: print(data2.index)Out: RangeIndex(start=0, stop=3, step=1)结果是一个类列表的对象,可用列表方法操作对象
columns查看列名In: print(data2.columns)Out: Index([‘col1’, ‘col2’, ‘col3′], dtype=’object’)
shape查看形状,记录有多少行多少列In: print(data2.shape)Out: (3,3)形状为元组类型
isnull查看每个值是否为空值In: print(data2.isnull())Out: col1 col2 col30 False False False1 False False False2 False False False数据中没有空值,因此都是False
unique查看特定列的唯一值In: print(data2[‘col2’].unique())Out: [‘a’ ‘b’]查看col2列的唯一值
注意 在上述查看方法中,除了info方法外,其他方法返回的对象都可以直接赋值给变量,然后基于变量对象做二次处理。例如可以从dtype的返回值中仅获取类型为bool的列。

3 数据切片和切块

表3 Pandas常用数据切分方法

方法用途示例示例说明
[[‘列名1’, ‘列名2’,…]]按列名选择单列或多列In: print(data2[[‘col1′,’col2’]])Out: col1 col20 2 a1 1 b2 0 a选择data2的col1和col3两列
[m:n]选择行索引在m到n间的记录In: print(data2[0:2])Out: col1 col2 col30 2 a True1 1 b True选取行索引在[0:2)中间的记录,不包含2
iloc[m:n]In: print(data2.iloc[0:2])Out: col1 col2 col30 2 a True1 1 b True
iloc[m:n,j:k]选择行索引在m到n且列索引在j到k间的记录In: print(data2.iloc[0:2,0:1])Out: col10 21 1选取行索引在[0:2)列索引在[0:1)中间的记录,行索引不包含2,列索引不包含1
loc[m:n,[ ‘列名1’, ‘列名2’,…]]选择行索引在m到n间且列名为列名1、列名2的记录In: print(data2.loc[0:2,[‘col1′,’col2’]])Out: col1 col20 2 a1 1 b2 0 a选取行索引在[0:2)之间,列名为’col1’和’col2’的记录,行索引不包含2
提示 如果选择特定索引的数据,直接写索引值即可。例如data2.loc[2,[‘col1′,’col2’]]为选择第三行且列名为’col1’和’col2’的记录。

4 数据筛选和过滤

表4 Pandas常用数据筛选和过滤方法

方法用途示例示例说明
单列单条件以单独列为基础选择符合条件的数据In: print(data2[data2[‘col3’]==True])Out: col1 col2 col30 2 a True1 1 b True选择col3中值为True的所有记录
多列单条件以所有的列为基础选择符合条件的数据In: print(data2[data2==’a’])Out: col1 col2 col30 NaN a NaN1 NaN NaN NaN2 NaN a NaN选择所有值为a的数据
使用“且”进行选择多个筛选条件,且多个条件的逻辑为“且”,用&表示In: print(data2[(data2[‘col2′]==’a’) & (data2[‘col3’]==True)])Out: col1 col2 col30 2 a True选择col2中值为a且col3值为True的记录
使用“或”进行选择多个筛选条件,且多个条件的逻辑为“或”,用|表示In: print(data2[(data2[‘col2′]==’a’) | (data2[‘col3’]==True)])Out: col1 col2 col30 2 a True1 1 b True2 0 a False选择col2中值为a或col3值为True的记录
使用isin查找范围基于特定值的范围的数据查找In: print(data2[data2[‘col1’].isin([1,2])])Out: col1 col2 col30 2 a True1 1 b True筛选col1列值为1或2的记录
query按照类似sql的规则筛选数据In: print(data2.query(‘col2==”b”‘))Out: col1 col2 col31 1 b 1筛选数据中col2值为b的记录

5 数据预处理操作

表5 Pandas常用预处理方法

方法用途示例示例说明
T转置数据框,行和列转换In: print(data2.T)Out: 0 1 2col1 2 1 0col2 a b a行索引、列名以及数据相互调换
sort_values按值排序,默认为正序,可通过ascending=False指定倒序排序In: print(data2.sort_values([‘col1’]))Out: col1 col22 0 a1 1 b0 2 a按colo1列排序
sort_index按索引排序,默认为正序,可通过ascending=False指定倒序排序In: print( data2.sort_index(ascending=False))Out: col1 col2 col32 0 a 01 1 b 10 2 a 1按索引倒序排序
dropna去掉缺失值,可通过axis设置为0或 index、1或columns丢弃带有缺失值的行或列In: print(data2.dropna())Out: col1 col2 col30 2 a True1 1 b True2 0 a False直接丢弃带有缺失值的行
fillna填充缺失值,可设置为固定值以及不同的填充方法In: print(data2.fillna(method=’bfill’))Out: col1 col2 col30 2 a True1 1 b True2 0 a False使用下一个有效记录填充缺失值
astype转换特定列的类型In: data2[‘col3’] = data2[‘col3’].astype(int)In: print(data2.dtypes)Out: col1 int64col2 objectcol3 int32dtype: object将col3转换为int型
rename更新列名In: print(data2.rename(columns=
{‘col1′:’A’,’col2′:’B’,’col3′:’C’}))Out: A B C0 2 a 11 1 b 12 0 a 0
将data2的列名更新为A、B、C
drop_duplicates去重重复项,通过指定列设置去重的参照In: print(data2.drop_duplicates([‘col3’]))Out: col1 col2 col30 2 a 12 0 a 0按col3列去重重复记录
replace查找替换In: print(data2.replace(‘a’,’A’))Out: col1 col2 col30 2 A 11 1 b 12 0 A 0将小写字符a替换为大些字母A
sample抽样In: print(data2.sample(n=2))Out: col1 col2 col30 2 a 11 1 b 1从data2中随机抽取2条数据

6 数据合并和匹配

表6 Pandas常用数据合并和匹配方法

方法用途示例示例说明
merge关联并匹配两个数据框In: print(data2.merge(data1,on=’col1′,how=’inner’))Out: col1 col2_x col3_x col2_y col3_y col40 1 b 1 2 3 4关联data1和data2,主键分别为a列和col1列,内关联方式
concat合并两个数据框,可按行或列合并In: print(pd.concat((data1,data2),axis=1))Out: col1 col2 col3 col4 col1 col2 col30 1 2 3 4 2 a 11 6 7 8 9 1 b 12 11 12 13 14 0 a 0按列合并data1和data2,可通过指定axis=0按行合并
append按行追加数据框In: print(data1.append(data2))Out: col1 col2 col3 col40 1 2 3 4.01 6 7 8 9.02 11 12 13 14.00 2 a 1 NaN1 1 b 1 NaN2 0 a 0 NaN将data2追加到data,等价于pd.concat((data1,data2),
axis=0)
join关联并匹配两个数据框In: print(data1.join(data2,lsuffix=’_d1′, rsuffix=’_d2′))Out: col1_d1 col2_d1 col3_d1 col4 col1_d2 col2_d2 col3_d20 1 2 3 4 2 a 11 6 7 8 9 1 b 12 11 12 13 14 0 a 0将data1和data2关联,设置关联后的列名前缀分别为d1和d2

7 数据分类汇总

表7 Pandas常用数据分类汇总方法

方法用途示例示例说明
groupby按指定的列做分类汇总In: print(data2.groupby([‘col2’])[‘col1’].sum())Out: col2a 2b 1Name: col1, dtype: int64以col2列为维度,以col1列为指标求和
pivot_table建立数据透视表视图In: print(pd.pivot_table(data2,index=[‘col2’]))Out: col1 col3col2a 1 0.5b 1 1.0Name: col1, dtype: int64以col2列为索引建立数据透视表,默认计算方式为求均值

8 高级函数使用

表8 Pandas常用高级函数

方法用途示例示例说明
map将一个函数或匿名函数应用到Series或数据框的特定列In: print(data2[‘col3’].map(lambda x:x*2))Out: 0 21 22 0Name: col3, dtype: int64对data2的col3的每个值乘2
apply将一个函数或匿名函数应用到Series或数据框In: print(data2.apply(pd.np.cumsum))Out: col1 col2 col30 2 a 11 3 ab 22 3 aba 2将data2的所有列按行(默认)做累加
agg一次性对多个列做聚合操作In: import numpy as npIn: print(data2.groupby([‘col2’]).agg(
{‘col1′:np.sum,’col3’:np.mean}))Out: col1 col3col2a 2 0.5b 1 1.0
在data2中以col2为维度,对col1求和,col3求均值

You may also like...

发表回复