本文主要介绍pandas模块,该模块是Python用于数据导入及数据整理的模块,对于数据分析,数据挖掘等前期数据处理工作十分有用,它提供了很多方法,使得数据处理变得简单高效。
pandas模块有两个主要的数据结构对象:Series和DataFrame。Series对象是序列,类似一维数组,同时带有标签和索引,像Python的字典结构;DataFrame对象则相当于一张二维表格,类似二维数组,像数据库中的表。本文对Excel数据的分析主要使用了DataFrame对象。
首先导入pandas库,一般都会用到numpy库,所示我们先导入备用:
import pandas as pd
import numpy as np
下面介绍如何读取Excel文件、读取指定的行列、数据清理、数据合并、数据统计、主要使用了DataFrame对象,分别为df、df1和df2 。
方法一:默认读取第一个表单(Sheet)
execlFile = r"D:\自己的文件\1(1)(1).xlsx"
df = pd.DataFrame(pd.read_excel(execlFile))
方法二:通过指定表单(Sheet)的方式来读取
execlFile = r"D:\自己的文件\1(1)(1).xlsx"
df = pd.DataFrame(pd.read_excel(execlFile,sheet_name=“Sheet”))
df[col]:根据列名,并以Series的形式返回列表
例如:df1 = df[“标题”]
df[col1,col2]:以表格数据形式返回多列
例如:df1 = df[“标题1”,“标题2”]
df.iloc[0,:]:返回第一行(以列形式返回Excel表格第一行数据)
df.iloc[0,0]:返回第一行第一列单元格数据
读取指定的多行,例如10行
df1 = df.ix[[1,10]].values
如果默认读取前5行,可以使用下面代码:
df.head()
数据清理主要实现对Excel数据的清理,包括重命名列名、判断空值、删除包含空值得行和列。
df.columns = [“a”,“b”,“c”]:重命名列名
例如,将“买家会员名”“买家实际支付金额”重命名为“会员名”“消费金额”,代码如下:
df1 = df[“买家会员名”,“买家实际支付金额”]
df1.columns = [“会员名”,“消费金额”]
pd.isnull() 检查DataFrame对象中的空值,并返回一个Boolean数组
例如,检查“联系手机”一列是否有空值,代码如下:
df1 = df[[“联系手机”]]
a = pd.isnull(df1)
df.dropna():删除所有包含空值的行
例如:print(df1.dropna(axis = 0))
df.dropna(axis = 1) :删除所有包含空值的列
例如:print(df1.dropna(axis = 1))
df.fillna(x) : 用x代替DataFrame对象中的所有空值
例如:将联系手机为空的手机号替换为18688888888
df[“联系手机”] = df[“联系手机”].fillna(18688888888)
下面主要介绍合并多个Excel文件的方法:
df1.append(df2):将df2中的行添加到df1的尾部
pd.concat([df1,df2],axis = 1):将df2中的列添加到df1的尾部
df1.join(df2,on=None,how=“inner”):对df1的列和df2的列执行SQL形式的join(拼接列)
如果两个列的列名相同,可以通过lsuffix="",rsuffix=""区分,例如:
print(df1.join(df2,on=None,how=“inner”,lsuffix=“1”,rsuffix=“2”))
数据分组统计是对Excel数据进行分组汇总统计。
例如:按“宝贝标题”分组统计宝贝数量,代码如下:
df1 = df.groupby([“宝贝标题”])[“宝贝总数量”].sum()
例如:按“宝贝标题”分组统计每种商品有多少客户购买,代码如下:
df1 = df.groupby([“宝贝标题”])[“客户名称”].count()
DataFrame对象提供了以下方法实现汇总统计:
df.mean():返回所有列的均值
df.count():返回每一列中的非空值个数
df.max():返回每一列的最大值,返回某列最大值需要指定列名,例如df.[“宝贝总数量”].max()
df.min():返回每一列的最小值,返回某列最小值需要指定列名,例如df.[“宝贝总数量”].min()