python读取文件数据柱状图_Python读取多列数据以及用matplotlib制作图表方法实例...

多列数据的读入以及处理

这次我们用到的数据是煤炭5500周价格的最高价和最低价。左侧为价格的数据表格,右侧为日期。

202009230915569.jpg

一、导入数据

这里我们就直接跳过讲解,如有不懂的,详见上一篇博客。见代码。

import matplotlib.pyplot as plt

import re

plt.rcParams["font.sans-serif"] = ["SimHei"] # 设置字体

plt.rcParams["axes.unicode_minus"] = False # 设置正负号

# 导入数据,日期

with open("日期.csv", encoding="gbk") as oo:

day = oo.read()

day_str = day.replace("

", ",") # 换行替换成逗号

day_list = re.split("[,]", day_str)

list_days = []

for s in range(len(day_list)-1): # 获得时间

list_days.append(day_list[s])

# 将x转换成时间类型

# 导入数据,金额

with open("煤炭5500周价格波动数据.csv", encoding="gbk") as pp:

sk = pp.read()

ll = sk.replace("

", ",") # 换行替换成逗号

list_1 = re.split("[,]", ll) # 分割数据

list_2 = []

for s in range(len(list_1)-1):

list_2.append(int(float(list_1[s])))

现在我们已经讲数据读取到相关的列表里,输出一下。

输出结果:

["2019/12/27", "2019/12/20", "2019/12/13", "2019/12/6", "2019/11/29", "2019/11/22", "2019/11/15", "2019/11/8", "2019/11/1", "2019/10/25", "2019/10/18", "2019/10/11", "2019/9/27", "2019/9/20", "2019/9/12", "2019/9/12", "2019/9/6", "2019/8/30", "2019/8/23", "2019/8/16", "2019/8/9", "2019/8/2", "2019/7/26", "2019/7/19", "2019/7/12", "2019/7/5", "2019/6/28", "2019/6/21", "2019/6/14", "2019/6/7", "2019/5/31", "2019/5/24", "2019/5/17", "2019/5/10", "2019/4/26", "2019/4/19", "2019/4/12", "2019/4/5", "2019/3/29", "2019/3/22", "2019/3/15", "2019/3/8", "2019/3/1", "2019/2/22", "2019/2/15", "2019/2/1", "2019/1/25", "2019/1/18", "2019/1/18", "2019/1/11", "2019/1/4", "2018/12/28"]

[550, 555, 550, 555, 550, 555, 550, 555, 550, 555, 550, 555, 550, 555, 550, 555, 560, 565, 570, 575, 575, 580, 580, 585, 585, 590, 585, 590, 585, 590, 585, 590, 580, 585, 580, 585, 580, 590, 575, 585, 580, 590, 595, 600, 590, 600, 590, 595, 600, 605, 605, 615, 600, 610, 590, 600, 590, 600, 590, 600, 595, 600, 610, 620, 615, 620, 615, 620, 615, 625, 620, 625, 630, 640, 620, 630, 620, 625, 620, 630, 625, 630, 635, 645, 615, 625, 600, 605, 600, 605, 585, 590, 590, 595, 590, 595, 590, 595, 580, 590, 585, 595, 575, 580]

二、处理价格数据

我们可以看到0,2,4,6,8.......等偶数位的数值是周最低价,而单数位的数值是周最高价。我们可以用循环的方式读取到相关的数据。

代码如下。

这样就可以把数据进行分组了。以此类推,可以导入多列数据。

根据观察可以看到,时间列表是以降序的方式排列的,我们需要将数据转置过来,让列表数据改为升序。方法一、调整导入的CSV文件的数据顺序。方法二、我们引入reversed()函数。该函数有两种写法,作用主要是将列表,range(),字典里的数据进行逆向排列。

逆转对象:list_x

写法一、

xxx = reversed(list_x)

写法二、

直接使用

list(reversed(list_x))

aaa = reversed(list_average) 转置一个作为样例

# 以上分割取得list_high,low,average

# 设置x轴,y轴标签,设置表格标题

plt.xlabel("时间")

plt.ylabel("价格")

plt.title("最高价/最低价/均价周期波动图")

plt.legend(loc="upper right")

plt.figure(figsize=(9, 8))输出图片大小900px*800px

图表制作

需要的数据我们已经处理好了,接着就是生成图表。

import matplotlib.pyplot as plt

import re

plt.rcParams["font.sans-serif"] = ["SimHei"] # 设置字体

plt.rcParams["axes.unicode_minus"] = False # 设置正负号

# 导入数据,日期

with open("日期.csv", encoding="gbk") as oo:

day = oo.read()

day_str = day.replace("

", ",") # 换行替换成逗号

day_list = re.split("[,]", day_str)

list_days = []

for s in range(len(day_list)-1): # 获得时间

list_days.append(day_list[s])

print(list_days)

# 将x转换成时间类型

# 导入数据,金额

with open("煤炭5500周价格波动数据.csv", encoding="gbk") as pp:

sk = pp.read()

ll = sk.replace("

", ",") # 换行替换成逗号

list_1 = re.split("[,]", ll) # 分割数据

list_2 = []

for s in range(len(list_1)-1):

list_2.append(int(float(list_1[s])))

print(list_2)

list_high = [] # 最高

list_low = [] # 最低

list_average = [] # 均值

for k in range(len(list_2)):

if k % 2 == 0:

list_low.append(list_2[k])

list_average.append((list_2[k]+list_2[k+1])/2)

else:

list_high.append(list_2[k])

aaa = reversed(list_average)

# 以上分割取得list_high,low,average

# 设置x轴,y轴标签,设置表格标题

plt.xlabel("时间")

plt.ylabel("价格")

plt.title("最高价/最低价/均价周期波动图")

# 设置标注

plt.figure(figsize=(9, 8))

# 制作折现图

plt.plot(range(len(list_low)), list(reversed(list_high)), label="最高价", color="brown",marker="o",markerfacecolor="c",markersize="5")

plt.plot(range(len(list_low)), list(reversed(list_low)), label="最低价", color="skyblue",marker="s",markerfacecolor="r",markersize="5")

plt.plot(range(len(list_low)), list(reversed(list_average)), label="均价", color="lawngreen",marker="h",markerfacecolor="coral",markersize="5")

# 设置标注

plt.legend(loc="upper right") # 右上upper right 右下lower right

plt.show()

这是到目前我们制作出来的折线图

2020092309155710.png

替换x轴坐标点更改成日期

这里我们使用到plt.xticks()

书写格式:

plt.xticks(被替换的数值(数据长的的列表),替换的数据,数据方向(默认横向))

plt.xticks(range(len(list_low)), list(reversed(list_days)), rotation="vertical")

vertical:数值方向,也可以写角度。

到这了我们就完成了全部的代码。

结束:最终代码

import matplotlib.pyplot as plt

import re

plt.rcParams["font.sans-serif"] = ["SimHei"] # 设置字体

plt.rcParams["axes.unicode_minus"] = False # 设置正负号

# 导入数据,日期

with open("日期.csv", encoding="gbk") as oo:

day = oo.read()

day_str = day.replace("

", ",") # 换行替换成逗号

day_list = re.split("[,]", day_str)

list_days = []

for s in range(len(day_list)-1): # 获得时间

list_days.append(day_list[s])

print(list_days)

# 将x转换成时间类型

# 导入数据,金额

with open("煤炭5500周价格波动数据.csv", encoding="gbk") as pp:

sk = pp.read()

ll = sk.replace("

", ",") # 换行替换成逗号

list_1 = re.split("[,]", ll) # 分割数据

list_2 = []

for s in range(len(list_1)-1):

list_2.append(int(float(list_1[s])))

print(list_2)

list_high = [] # 最高

list_low = [] # 最低

list_average = [] # 均值

for k in range(len(list_2)):

if k % 2 == 0:

list_low.append(list_2[k])

list_average.append((list_2[k]+list_2[k+1])/2)

else:

list_high.append(list_2[k])

aaa = reversed(list_average)

# 以上分割取得list_high,low,average

# 设置x轴,y轴标签,设置表格标题

plt.xlabel("时间")

plt.ylabel("价格")

plt.title("最高价/最低价/均价周期波动图")

# 设置标注

plt.figure(figsize=(9, 8))

plt.xticks(range(len(list_low)), list(reversed(list_days)), rotation="vertical")

# 设置折现图

plt.plot(range(len(list_low)), list(reversed(list_high)), label="最高价", color="brown",marker="o",markerfacecolor="c",markersize="5")

plt.plot(range(len(list_low)), list(reversed(list_low)), label="最低价", color="skyblue",marker="s",markerfacecolor="r",markersize="5")

plt.plot(range(len(list_low)), list(reversed(list_average)), label="均价", color="lawngreen",marker="h",markerfacecolor="coral",markersize="5")

# 设置标注

plt.legend(loc="upper right")

plt.show()

结果示意图:

2020092309155711.png

总结

到此这篇关于Python读取多列数据以及用matplotlib制作图片的文章就介绍到这了,更多相关Python读取多列数据用matplotlib制作图片内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

原文链接:https://blog.csdn.net/Eli_change/article/details/108685669

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种强大的编程语言,它具有丰富的库和工具来处理各种数据分析和可视化任务。在Python,我们可以使用pandas库来读取和处理Excel表格,并使用matplotlib或seaborn库来进行数据可视化。 要首先实现数据分析可视化,我们需要安装pandas、matplotlib和seaborn库。可以使用pip命令在命令行安装这些库,如下所示: pip install pandas pip install matplotlib pip install seaborn 一旦安装了这些库,我们可以使用pandas库的read_excel()函读取Excel表格数据,并将其存储为一个DataFrame对象。DataFrame是pandas一个重要的数据结构,它对应于Excel表格的一个二维数据表。 import pandas as pd # 读取Excel表格数据 data = pd.read_excel('data.xlsx') 读取数据后,我们可以对数据进行各种操作和分析,例如计算统计指标、筛选特定的数据、进行数据聚合等。这些操作可以帮助我们更好地理解数据和发现数据的规律。 接下来,我们可以使用matplotlib和seaborn库来进行数据可视化。这些库提供了许多绘图函和工具,可以绘制各种类型的图表,如折线图、散点图、柱状图、箱线图等。 import matplotlib.pyplot as plt import seaborn as sns # 绘制折线图 plt.plot(data['时间'], data['销售额']) plt.xlabel('时间') plt.ylabel('销售额') # 绘制散点图 plt.scatter(data['价格'], data['销量']) plt.xlabel('价格') plt.ylabel('销量') # 绘制柱状图 sns.barplot(data['地区'], data['销售额']) plt.xlabel('地区') plt.ylabel('销售额') 以上代码演示了几个简单的数据可视化例子,你可以根据自己的需求和数据类型选择不同的图表进行绘制。 通过读取Excel表格数据、对数据进行处理和分析,并将结果可视化,我们可以更好地理解数据、发现规律、进行决策和预测等。这也是Python编程在数据分析和可视化的一个重要应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值