Pandas介绍
Pandas基于Numpy的一个第三方的工具库,Pandas主要是,用于做数据清洗方面的工作,如果是数据量比较大,而且清洗工作不是那么复杂的话,通常几步代码就能搞定
Pandas和Numpy一样,也有两个核心的数据结构分别是Series和DateFrame
Series
Series是一维序列,定长的字典序列,他有两个主要属性,index和values
index默认是0.1.2.3.....自增长的,我们也可以自己指定索引 index=['a','b','c']
#Series的创建
x2 = Series(data=[1,2,3,4], index=['a', 'b', 'c', 'd'])
#Series的另一种创建,字典形式
d={'a':1,'b':2,'c':3}
x3=Series(d)
DateFrame
DateFrame是二维表结构,他的结构类似数据库的表,具有行索引和列索引
#DateFrame的创建
import pandas as pd
from pandas import Series ,DataFrame
data = {'chinese':[66,95],'english':[65,92]}
df1=DataFrame(data)
df2=DtaaFrame(data,index=['zhang','wang'])
Pandas处理数据
Pandas支持四种非常简单的处理数据的方式,数据的导入导出,数据的清洗,数据的统计,数据表的合并
数据的导入导出
Pandas导入导出非常方便
import pandas as pd
from pandas import Series,DataFrame
score=DataFrame(pd.read_excel('data.xlsx'))
score.to_excel('data.xlsx')
如果运行时候出现缺少xlrd,openpyxl包的情况,直接在命令行先使用
pip install xlrd
pip install openpyxl
即可
数据清洗
Pandas支持两种方式的数据清洗,一种是比较简单的数据清洗,另一种是使用apply函数对数据进行清洗
简单清洗
data = {'chinese':[66,95],'english':[65,92]}
df2=DtaaFrame(data,index=['zhang','wang'])
- 删除DataFrame中不必要的行
#删除语文列
df2=df2.drop(cloumns=['chinese'])
- 对列名重命名
df2.rename(columns={'chinese':'yuwen','english':'yingyu'},inplace=True)
- 去掉重复值
#去掉数据中的重复行
df=df.drop_duplicates()
- 更改数据格式
df2['chinese'].astype('str')
- 去掉数据间的空格
#去掉左右两边的空格
df2=['chinese']=df2['chinese'].map(str.strip)
#去掉左边的空格
df2=['chinese']=df2['chinese'].map(str.lstrip)
#去掉右边空格
df2=['chinese']=df2['chinese'].map(str.rstrip)
#删除特殊符号
df2=['chinese']=df2['chinese'].str.strip('$')
- 大小写转换
#全部转大写
df2.columns=df.columns.str.upper()
#全部转小写
df2.columns=df.columns.str.lower()
#首字母大写
df2.columns=df.columns.str.title()
- 查找空值
# 针对df表查找空值,空值的位置变成了'True'
df.isnull()
#查找哪列出现了空值
df.isnull().any()
- 填充空值
fillna()会填充nan数据,返回填充后的结果。如果希望在原DataFrame中修改,则把inplace设置为True
df = pd.DataFrame({'id':[1, 2, nan, 4, nan, 6, 1, 2, 3], 'item1':[1, 2, 3, 4, nan, 6, 1, 2, 3], 'item2':[1, 2, 3, 4, 5, 6, 1, nan, 3]})
print(df)
df.fillna(0, inplace = True)
使用apply函数对数据进行清洗
数据统计
pandas的统计函数遇到空值自动排除
count() 统计个数,空值不计算
min()最小值
max()最大值
sum()总和
mean()平均值
median()中位数
var()方差
std()标准差
argmin()统计最小值的索引位置
argmax()统计最大值的索引位置
idxmin()统计最小值的索引位置
idxmax()统计最大值的索引位置
describe()一次性统计多个输出指标,包括count,mean,std,min,max等
使用
df1=DataFrame({'name':['zhang','wang'],''date1:range(5)})
print df1.describe()
数据表合并
将多个渠道的数据表进行合并,一个DataFrame相当于一个数据库的数据表,多个DataFrame的数据表的合并相当于多个数据库的表合并
使用merge()函数
基于指定列进行连接
df3=pd.merge(df1,df2,on='name')
inner内连接
#是merge的默认
df3=pd.merge(df1,df2,how='inner')
left左连接
df3=pd.merge(df1,df2,how='left')
right右连接
df3=pd.merge(df1,df2,how='right')
outer外连接
df3=pd.merge(df1,df2,how='outer')