numpy常用函数
%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np
x1=np.arange(100)#返回0-99的一组等差数列
x2=np.linspace(0,100,100)#从(0,100)均匀取100个点
data=[6,7.5,8,0,1]
x3=np.array(data)#将输入数据转换为数组
x4=np.random.randn(100)#随机生成一个1行的数组
x5=np.random.randn(2,3)#随机生成一个2行3列的数组
data1=[[1,2,3,4],[5,6,7,8]]
x6=np.array(data1)#将输入数据转换为数组
x4
pandas常用函数
一、导入外部数据
import pandas as pd
import numpy as np
path=r'...\*.csv'
df=read_table(path,sep=',',header=None)
或df=pd.Dataframe(pd.read_csv(path,header=None))
二、数据表检查
(1)数据维度:df.shape #使用shape函数来查看数据表的维度,也就是行数和列数。
(2)数据表信息:df.info() #使用info函数查看数据表的整体信息,包括数据维度、列名称、数据格式和所占空间等信息。
(3)数据格式:df.dtypes #查看数据表各列格式
df['某列'].dtype #查看单列的格式
(4)检查空值:df.isnull() #检查表中数据是否为空值
df['某列'].isnull #检查某列数据是否为空值
(5)查看唯一值:df['某列'].unique() #查看某列的唯一值,需要先选中列
(6)查看数据表的值:df.values
(7)查看列名称:df.columns
(8)查看前3行:df.head(3)
(9)查看后3行:df.tail(3)
三、数据清洗
1、处理空值(删除或填充)
df.dropna(how='any') #删除数据表中含有空值的行
df.fillna(value=0) #使用数字0填充数据表中的空值
df['price'].fillna(df['price'].mean()) #使用price列的均值填充price列的空值
2、清理空格
df['city']=df['city'].map(str.strip) #清除city列中的字符空格
3、大小写转换
df['city']=df['city'].str.lower() #将city列的值转换为小写
4、更改数据格式
df['price'].astype('int') #通过astype函数来修改数据格式
5、修改列名称
df.rename(columns={'old':'new'}) #将列名old修改为new
6、删除重复项
df['city'].drop_duplicates() #将city列中的重复值删除,默认保留第一个出现的
df['city'].drop_duplicates(keep='last') #将city列中的重复值删除,默认保留最后一个
7、数值修改及替换
df['city'].replace('old','new') #将city列出现的old值替换为new
四、数据预处理
1、数据表合并
在excel中没有直接完成数据表合并的函数,但可以通过vlookup函数分步实现。在python中可以通过merge函数一次性实现。
df_inner=pd.merge(df1,df2,how='inner') #使用merge函数对两个数据表进行合并,合并的方式为inner,将 两个数据表中共有的数据匹配到一起生成新的数据表。并命名为 df_inner。
合并的方式还有left,right,outer:
df_inner=pd.merge(df1,df2,how='left')
df_inner=pd.merge(df1,df2,how='right')
df_inner=pd.merge(df1,df2,how='outer')
2、设置索引列
索引列可以进行数据提取、筛选、汇总
df_inner.set_index('id') #设置id列为索引
df_inner.reset_index() #恢复索引
df_inner.set_index('age') #设置age列为索引
3、排序(按索引、按数值)
可以用sort_index()或sort_values(by=['特定列'])按索引或特定列的值排序
df_inner.sort_index() #按索引列排序
df_inner.sort_values(by=['age']) #按特定列的值排序
4、数据分组
df_inner['group']=np.where(df_inner['price']>3000,'high','low') #增加group列,对价格进行分组
df_inner.loc[(df_inner['city']=='Beijing')&(df_inner['price']>=4000),'sign')]=1 #还可以对多个字段的值进行判断后,进行分组.对city列为北京并且price>=4000的数据标记为1
5、数据分列
在python中使用split函数实现分列
df_split=pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size']) #将df_inner表中的category列分成category、size两列,分隔符为‘-’。
五、数据提取
1、按标签提取(loc[])
df_inner.loc[3] #按索引提取(索引=3)单行的数值
df_inner.loc[0:2] #按索引提取区域行数(索引在0-2)的数值
重设date列为索引
df_inner.loc[:'2013-01-04'] #提取2013-01-04之前的所有数据
2、按位置提取(iloc[])
df_inner.iloc[:2,:3] #提取前2行,前3列的数据
df_inner.iloc[[1,3],[3,5]] #提取第1、3行,第3、5列的数据
3、按标签和位置提取(ix[])
df_inner.ix[:'2013-01-04',:4] #提取2013-01-04之前的行,第3、5列的数据数据
4、按条件提取(区域和条件值)
df_inner.loc[df_inner['city'].isin(['Beijing'])] #筛选city为北京的行
六、数据筛选
1、与
df_inner.loc[(df_inner['age']>25)&(df_inner['city']=='Beijing'),['point','price']]
2、或
df_inner.loc[(df_inner['age']>25)|(df_inner['city']=='Beijing'),['point','price']].sort(['age'])
3、非
df_inner.loc[(df_inner['age']>25)|(df_inner['city']!='Beijing'),['point','price']].sort(['id'])
df_inner.loc[(df_inner['age']>25)|(df_inner['city']!='Beijing'),['point','price']].sort(['id']).city.count()
4、query()函数
df_inner.query('city==['Beijing','shanghai']')
df_inner.query('city==['Beijing','shanghai']').price.sum() #对筛选后的price字段求和
七、数据汇总
1、分类汇总
2、数据透视
八、数据统计
1、数据采样
2、描述统计
3、相关分析
df_inner['price'].corr(df_inner['point'])
九、数据输出
1、写入excel
df_inner.to_excel('excel_to_python_dlp_test.xlsx',sheet_name='test_cc')
2、写入csv
df_inner.to_csv('excel_to_python_dlp_test2.csv')
本文转载自:https://zhuanlan.zhihu.com/p/97617276