常用命令(python数据分析)
-
导入包
import pandas as pd import numpy as np
-
导入数据
#默认utf-8,gbk对中文的支持更好 pd.read_csv(filename,encoding='gbk') #key是列名,value是数据,从字典导入数据需要指定index dict1 = {'a':1,'b':2} df = pd.DataFrame(dict1,index=[0])
-
查看数据
#行数、列数 df.shape[0] df.shape[1] #前几行,后几行,默认为5 df.head() df.tail(3) #数据汇总统计 df.describe() #数据概况 df.info() #列名 df.columns #数据类型 df.dtypes #各列平均值 df.mean()
-
数据选取
#按列名查看某列 df[col_name] df.col_name #查列名看多列 df[[col1,col2]] #按索引查看某行,第一行: df.iloc[0] #按索引查看某行某列,三行四列那个元素 df.iloc[2,3]
-
数据合并
#按行拼接 pieces = [df[2:20],df[23:30],df[35:40]] df2 = pd.concat(pieces) #按列拼接 left = pd.DataFrame({'key': ['foo', 'bar'], 'col1': [1, 2]}) right = pd.DataFrame({'key': ['foo', 'bar'], 'col2': [4, 5]}) pd.merge(left,right,on='key') #增加一列 df = pd.DataFrame(np.random.randn(8, 4), columns=['A','B','C','D']) extra = df.iloc[-1] data = df.append(extra)
-
数据清理 (注意: 修改DataFrame要赋值)
#检查是否空值,返回布尔值(rue,False) df.isnull() #返回各列空值的个数 df.isnull().sum() #处理空值,用x替换空值 df = df.fillna(x) #删除包含空值的行 df = df.dropna() #删除包含空值的列 df = df.dropna(axis=1)
-
数据处理
#选择某列大于1的行 df[df[colname]>1] #选择某列包含x或者y字段的行,pandas有很多字符串处理函数 df[df[colname].str.contains(x|y)] #替换字符 df[df[colname].replace('k','000')] #转换数据类型 df.num = df.num.astype(float) #查看某列的唯一值的个数 df.colname.value_counts() #按照某列排序(默认升序) df.sort_values(by = colname,ascending=True) #应用函数,简单的可以用lambda df.apply(lambda x:x.max()-x.min()) #复杂的可以先定义好函数 def func(): pass df.apply(func) #也可以用numpy自带的,例如cumsum累加 df.apply(np.cumsum)
-
分组聚合
#准备数据 df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C' : np.random.randn(8), 'D' : np.random.randn(8)}) #对两列进行分组并求均值,类似于SQL里的group by df.groupby(['A','B']).mean() #数据透视表,以col1为行,col2为列,取col3和col4的最大值,可以参考Excel的数据透视表 df.pivot_table(index=col1,columns=col2,values=[col3,col4],aggfunc=max)