pandas数据分析处理常用知识点整理

一.基本知识

有两个主要的数据结构,Series和DataFrame,记住大小写区分。

导入库方法:import pandas as pd

1.Series类似于一维数组,和numpy的array接近,由一组数据和数据标签组成。数据标签有索引的作用。数据标签是pandas区分于numpy的重要特征。

(1) 用列表list创建Series

s=pd.Series([1,2,3,4,])
s
0 1
1 2
2 3
3 4
dtype:int64

左边是数据索引index,即标签,右边是数据。索引index默认从0到n,也可以指定index。
s=pd.Series([1,2,3,4],index = [‘a’,‘b’,‘c’,‘d’])

(2) 用字典dict来创建Series
S=pd.Series({‘A’:1,’B’:2,’C’:3,’D’:4})

(3) 用numpy array创建Series
S = pd.Series(np.random.randn(5),index=[‘a’,’b’,’c’,’d’,’e’]
Series数据索引切片与list相似。

2.DataFrame是一个表格型的数据结构,它含有不同的列,每列都是不同的数据类型。我们可以把DataFrame看作Series组成的字典,它既有行索引也有列索引。DataFrame会自动补充索引,并且将字典的key作为列标签,即column。在这里,dict的key顺序是DataFrame的顺序,不再是无序的。

df = pd.DataFrame(np.random.randn(3, 4), index=['a','b','c'],columns=list('ABCD'))
df
A	B	C	D
a	-0.493069	-1.259966	0.957297	0.834428
b	0.077725	1.622198	1.118242	0.926442
c	-0.482049	0.009130	0.464322	-0.789371

二.常用方法

【数据信息查看】

df.shape:维度查询

df.dtypes:每一列数据的格式

df[‘A’].dtype:某一列数据格式

df.isnull():查看整个df的空值情况,False表示非空值,True表示空值

df[‘A’].isnull():查看某一列的空值情况,False表示非空值,True表示空值

df.notnull():查看整个df的非空值情况,False表示空值,True表示空非值

df[‘A’].notnull():查看某一列的空值情况,False表示空值,True表示非空值

df.index:查看行名称

df.columns:查看列名称

df.values:查看数据表的值

df.info():数据表基本信息(维度、列名称、数据格式、所占空间等)

df.describe():针对数值数据,计算字段有count(非空值数)、mean(平均值)、std(标准差)、min(最小值)、max(最大值)、25%(25%分位数)、50%(50%分位数即中位数)、75%(75%分位数)、max(最大值)

df.head():默认查看前5行数据,()内可以指定其他行数。

df.tail():默认查看后5行数据,()内可以指定其他行数。

【导入导出文件】

导入csv文件:从name.csv文件中导入数据,header=1表示带有标题,sep表示数据分隔符为空格,默认分隔符为逗号。

df = pd.DataFrame(pd.read_csv(‘name.csv’,header=1,sep=’ ’,))

导入xlsx文件:从name.xlsx文件中导入数据,header=None表示不带标题,默认分隔符为(‘\t’)

df = pd.DataFrame(pd.read_excel(‘name.xlsx’,header=None))

导出csv文件:导出数据到E盘为result的csv文件,index=True表示文件有索引名称,encoding=’gb2312’中文编码,不会出现乱码。

df.to_csv(’E:\\result.csv‘,index=True,encoding=’gb2312’)

导出xlsx文件:导出数据到xlsx文件。

df.to_xlsx(’E:\\result.csv‘,index=True,encoding=’gb2312’)

【数据清洗】
df.drop(‘A’,axis=1,inplace=True):删除A列数据,axis=1表示列,axis=0表示行,默认是行。inplace=True表示不创建新对象,直接对原始对象进行修改,inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果。默认是False。

del df[‘A’]:直接删除A列数据。

df.dropna():滤除带缺失数据的行,缺失数据指所谓的空值,没有数值。pandas使用NaN作为缺失数据的标记。

df.dropna (axis=0, how=‘any’, thresh=None, subset=None, inplace=False):axis默认为0,可以省略。how=’any’表示只有有缺失值,就删除,’all’表示所有的值都缺失才删除,默认为any可以省略。thresh=n表示保留至少n个不是NaN的行。subset删除特定列的缺失值。inplace同上。

df.dropna(axis=0,,how=’all’,subset = ["A", "B"])    # 删除A,B列中全为缺失值的行。

df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs):填充数据。value表示要填充的数据,method有‘backfill’/‘bfill’(使用后一个值填充缺失值), ‘pad’/‘ffill’(使用前一个值填充缺失值), None}几种方法,默认是None。Limit填充缺失值个数限制。

df.fillna(value={‘A’:10})   # 填充A列的缺失值为10.

df.drop_duplicates(subset=None,keep=’first,inplace=’False’):删除重复数据。keep有‘first’, ‘last’, 默认为 ‘first’,删除重复项并保留第一次出现的项。subset,inplace同上。

df.drop_duplicates(‘A’,’first’,inplace=False)     # 删除A中的重复性,保留第一个出现的项。

df[‘A’].map(str.strip()):map()根据提供的函数对指定序列做映射,即把A列每个数据的字符串前后空格及\n \t之类删掉。

df[‘A’].str.lower():大小写转换。将A字段中的字符转为小写。

df[‘A’].str.upper():大小写转换。将A字段中的字符转为大写。

df[‘A’].astype(‘int’):更改数据格式。将A中的数据格式改为int

df.rename(columns={‘A’:’A1’}):更改列名称。将列’A’名称改为’A1’

df[‘A’].replace(‘h’,’hello’):数据替换。将A中的’h’替换为’hello’

【数据索取切片】

1.单个数据索引切片

行索引:df.loc[‘a’]或者df.iloc[0]都可以实现数据行索引,但是行索引不能用df[0]。

列索引:df[‘A’] 或者 df.A都可以实现数据列索引,其结果输出是Series。

2.多个数据索引

行索引

df[‘a’:’b’]或df[0:2]或df.loc[‘a’:’c’]或df.iloc[0:2]:用于从index=’a’到index=’b’的行切片索引,左右都包含。也可以用df[0:2],其等价于df[‘a’:’b’],需要注意的是数字索引依然是左闭右开。

列索引

df.loc[:,[‘A’,‘C’]]或者df.iloc[:,0:2]:用于从A到C的列切片索引,左右都包含。

行列索引

df.iloc[0:2,0:2]或者df.loc[‘a’:‘b’,‘A’:‘B’]:用于实现行列组合索引切片。

3.过滤索引

df[df.A>0]:使用单个列的值来选择数据。

df[df>0]:从满足布尔条件的DataFrame中选择值。

【数据筛选】
使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。

使用“与”进行筛选

df_inner.loc[(df_inner[‘age’] > 25) & (df_inner[‘city’] == ‘xiamen’), [‘id’,’city’,’age’,’gender’]]

使用“或”进行筛选

df_inner.loc[(df_inner[‘age’] > 25) | (df_inner[‘city’] == ‘xiamen’), [‘id’,’city’,’age’,’gender’]])

使用“非”条件进行筛选

df_inner.loc[(df_inner[‘city’] != ‘xiamen’), [‘id’,’city’,’age’,’gender’]].sort([‘id’])

对筛选后的数据按city列进行计数

df_inner.loc[(df_inner[‘city’] != ‘xiamen’), [‘id’,’city’,’age’,’gender’]].sort([‘id’]).city.count()

使用query函数进行筛选

df_inner.query(‘city == [“beijing”, “xiamen”]’)

对筛选后的结果按price进行求和

df_inner.query(‘city == [“beijing”, “xiamen”]’).price.sum()

【数据合并】

merge: 两个数据合并,how有inner、left、right、outer

pd.merge(df,df1,how=inner)

append:两个数据连接,df2存放在df1后面

df1.append(df2)

join:数据合并,根据on指定的内容合并。

df1.join(df2,on=’key’)

concat:可以将数据根据不同的轴合并

pd.concat([df1,df2,df3],axis=1)  # 将df1,df2,df3按列进行合并。

【数据汇总】

主要有groupby和pivote_table

df_inner.groupby(‘city’).count():对所有的列进行计数汇总

df_inner.groupby(‘city’)[‘id’].count():按城市对id字段进行计数

df_inner.groupby([‘city’,’size’])[‘id’].count():对两个字段进行汇总计数

df_inner.groupby(‘city’)[‘price’].agg([len,np.sum, np.mean]):对city字段汇总,分别计算price的总和和均值

【loc、iloc、ix三者区别】

loc:标签索引,可以用字符串,eg:df.loc[‘A’]返回行标签为’A’的数据,df.loc[2]返回行标签为2的数据

iloc:位置索引,只能用数字,根据索引数进行索引,eg:df.iloc[2]返回位置索引为2,即第三行的数据。

ix:标签索引和位置索引,可以用字符串也可以用数字,已弃用该功能。

你可能感兴趣的:(python数据分析)