[Python] python的简单数据处理

本文介绍了如何使用Python的pandas和matplotlib库处理Excel数据,包括数据导入、单张及多张表格的读取,以及数据的简单统计和直方图绘制。通过实例展示了描述性统计操作和直方图的生成过程。
摘要由CSDN通过智能技术生成

python的功能非常强大,在excel数据的读取与处理也有相应的模块可以实现。在这里,我主要展示如何利用pandas以及matplotlib模块来实现对excel数据的读取,以及数据的简单可视化。

  • 模块pandasmatplotlib的安装可采用
pip install pandas
pip install matplotlib

Excel数据的导入

我们所使用的测试数据是一个名为“trati.xlsx”的excel表,它包含两个sheet,分别是trait1和trait2,其中trait1包含100x4的数据,数值范围在10-100,列名分别为env1、env2、env3和env4;trait2包含80x3的数据,数值范围在1-10,列名分别为t1、t2和t3。
如图:
在这里插入图片描述

在这里插入图片描述

  1. 当导入单张表格时:
import pandas as pd
# 函数pandas.read_excel()读取excel文件
# sheet_name:设置读取的sheet名,默认为第一张sheet;
# na_values:设置缺省值的形式
df=pd.read_excel('trait.xlsx',sheet_name='trait1',na_values='n/a')
# .info()方法可显示df的摘要信息(excel表每一列的数据类型,非缺省值的数目)
df.info()

运行结果如下:
在这里插入图片描述
2. 当导入多张表单时:

# 函数pd.ExcelFile():可将Excel文件转换为ExcelFile对象
# 函数ExcelFile.sheet_names:可获取ExcelFile的所有表单的名称,以列表形式存在
xls=pd.ExcelFile('trait.xlsx')
sheetList=xls.sheet_names
print(sheetList)

运行结果如下:
在这里插入图片描述
在获取sheet名称后,同样需要通过pd.read_excel()函数对excel进行读取。

# 此方法适用于一个excel表里含有多个sheet
df=pd.read_excel('trait.xls',sheet_name=sheetList,na_values='n/a')
# 同样地,如果我们的excel表格sheet数较少(如2-4个),我们可直接对其进行读取。
# 通过把sheetList换成sheet的名字即可,但是切记要以列表形式进行书写。
df=pd.read_excel('trait.xls',sheet_name=['trait1','trait2'],na_values='n/a')

读取多张sheet后,df的存储格式为字典形式,当我们想获取单个sheet的数据时:

# 获取trait1的数据
df['trait1']
# 获取trait2的数据
df['trait1']
# 获取trait1里面env1列的数据
df['trait']['env1']

数据的简单统计

描述性统计学是使用特定的数学或图表来体现数据的集中程度或离散程度,如平均数、中位数、众数、方差和标准差等等。

# .describe()方法可直接返回数据的平均值,方差、最大值和最小值等等
# 如对trait1的env1列进行统计
df['trait1']['env1'].describe()

运行结果如下:
在这里插入图片描述
如果只想对单个指标进行统计:

df['trait1']['env1'].count()	# 非缺省值的数目
df['trait1']['env1'].mean()		# 平均数
df['trait1']['env1'].std()		# 标准差
df['trait1']['env1'].min()		# 最小值
df['trait1']['env1'].max()		# 最大值

数据的展示–直方图

matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。
在这里,我们只展示直方图的绘制。

  1. 只对单列的数据进行绘制直方图
import matplotlib.pyplot as plt 	# 将matplotlib.pyplot缩写为plt,方便后面的使用
plt.hist(df['trait1']['env1'],bins=10,rwidth=0.9,density=True)
# bins:分布区间的数目,也可直接用区间表示,如10-20,20-30,30-40
# rwidth:两柱子间的宽度,以1为最大
# density:bool,默认为false,显示的是频数统计结果,为True则显示频率统计结果,这里需要注意,频率统计结果=区间数目/(总数*区间宽度),和normed效果一致,官方推荐使用density
plt.xlabel('env')				# x轴标签
plt.ylabbel('Counts')			# y轴标签
plt.xlim(10,70)					# x轴数值范围
# plt.ylim(0,0.02)				# y轴数值范围
plt.title('histogram of trait1') 	# 标题
plt.show()

运行如下:
在这里插入图片描述

  1. 对多列数据进行绘制直方图
import matplotlib.pyplot as plt 	# 将matplotlib.pyplot缩写为plt,方便后面的使用
plt.hist([df['trait1']['env1'],df['trait1']['env2'],df['trait1']['env3'],df['trait1']['env4']],bins=10,rwidth=0.9,density=True)	# 绘图数据需为列表
plt.legend(['env1','env2','env3','env4'],loc='upper right')
# plt.legend()添加图例,图例的名称需为聊表,loc为图例的位置
plt.show()

运行如下:
在这里插入图片描述


  • 更多内容可见
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值