利用Python获取excel的数据并绘制直方图(保姆级教程,含多组样例)

本文提供了一个详细的Python教程,演示如何从Excel文件中获取数据并绘制直方图。教程涵盖分析数据、引入所需模块、读取xls文件、数据处理以及直方图的制作,包括年份和客流量的总和或平均值作为坐标轴。示例展示了1949-1960年间乘客流量的变化。
摘要由CSDN通过智能技术生成

学习样例

开发工具:python3.8、pycharm2020.3.3
开发过程

分析数据

在这里插入图片描述
总共三列数据,分别是年份,月份及对应的客流量,如果将数据可视化,我们可以将年份作为横坐标,可以将客流量总和作为纵坐标,也可以将客流量的平均值作为纵坐标,体现每年客流量总量的变化,等等

引入模块

首先我们的目的是获取xls文件并作图,那么就要引入相关的模块

import xlrd
import matplotlib.pyplot as plt

若当前项目文件中还没有这两个模块就需要先下载,具体操作过程
点击file -> Settings 或 ctrl+alt+s
在这里插入图片描述
进入设置页面后,找到Project:项目名中的Python Interpreter,点击下方加号
在这里插入图片描述
在搜索框中搜索需要的模块,点击Install Package,之后等待下载即可
在这里插入图片描述
成功引入相关模块之后,我们就要开始获取xls文件中的数据了
Python 疫情数据分析
Python 商场销售数据分析

获取数据

利用xlrd中的方法获取指定文件指定工作表中的全部数据,其数据是一个列表形式,注意这里flights.xls文件与当前写的xx.py文件需要在同一文件夹内才能获取到数据
在这里插入图片描述
可以通过 open in Explorer打开所在文件夹
在这里插入图片描述
也可以直接在电脑里查找这个文件夹
在这里插入图片描述

data = xlrd.open_workbook("flights.xls")  # 打开excel文件
table1 = data.sheet_by_name('flights')  # 通过excel里面的表名获取工作表

接下来对得到的数据进行操作

处理数据

先要获得各表头所在列号

row1 = table1.row_values(0)  # 根据索引读取一行的数据,即表头
    for i in range(len(row1)):  # 获取各表头所在列号
        if row1[i] == 'year':
            oneindex1 = i
        elif row1[i] == 'month':
            oneindex2 = i
        elif row1[i] == 'passengers':
            oneindex3 = i

得到各表头所在列号后,我们将所有数据按列存储到列表中

# 获取year、month、passengers三列的数据
year = table1.col_values(oneindex1, 1)
month = table1.col_values(oneindex2, 1)
passengers = table1.col_values(oneindex3, 1)

因为我们直方图的横坐标为年份,所以我们需要对year这一列数据进行去除处理

# 剔除year列表中重复元素,并重新排列
Year = list(sorted(set(year)))

因为我们直方图的纵坐标为乘流量的总和,所以我们需要对每一年12个月的乘流量求和

# Passenger_Number存放各year的Passenger的总和
Passenger_Number=[]
for i in range(len(Year)):
    sum=0
    for j in range(len(passengers)):
        if(year[j]==Year[i]):
            sum+=passengers[j]
    Passenger_Number.append(int(sum))

如果需要的是该年每个月的平均客流量,只需要求和后做个除法,需要注意的是:结果不一定为整数,需要以浮点型数据输出

# Passenger_Avg存放各year的Passenger的平均值
Passenger_Avg = []
for i in range(len(Passenger_Number)):
    avg=Passenger_Number[i]/12
    Passenger_Avg.append(float('%.3f' % avg))

得到横坐标数据及其对应的纵坐标数据后,就可以开始画图了

作图

plt.xlabel('Date') #设置横坐标
plt.ylabel('Number of Passenger') #设置纵坐标
plt.bar(Year, Passenger_Number) #生成条形图
# 在直方图中各柱的头上标注其值
for a, b in zip(left, height):
    plt.text(a, b + 1, b, ha='center', va=
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温柔说给风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值