Python读取csv、Excel文件生成图表的方法

 更新时间:2023年07月31日 15:46:04   作者:〖羊头〗➫ lsy  
这篇文章主要介绍了Python读取csv、Excel文件生成图表,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

简介

本文章介绍了通过读取csv 或 Excel 文件内容,将其转换为折线图或柱状图的方法,并写入 html 文件中。

1. 读取CSV文件

1.1. 生成折线图

1.1.1. 简单生成图表

代码如下

import pandas
import matplotlib.pyplot as plt
# 设置csv文件路径
file = r'E:\test.csv'
# 防止中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 通过pandas读取文件内容
df = pandas.read_csv(file)
# 将文件第一行设置为序列名称
series_names = df .columns
# 将文件数据绘制为折线图
plt.plot(df)
plt.legend(series_names)  #设置序列名称
plt.xlabel('横轴标题')     #设置横坐标名称
plt.ylabel('纵轴标题')     #设置纵坐标名称
plt.title('图表标题')      #设置图表标题
# 将绘制的图表显示在屏幕上
plt.show()
# 保存图表为png文件
# plt.savefig('filename.png')

绘制结果如下(csv文件中含有3列数据)

1.1.2. 设置折线图格式

代码如下(在1.1.1目录的代码基础上增加了:图片长宽、标记样式、网格线、横纵轴参考线)

import pandas
import matplotlib.pyplot as plt
# 设置csv文件路径
file = r'E:\test.csv'
# 防止中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 通过pandas读取文件内容
df = pandas.read_csv(file)
# 将文件第一行设置为序列名称
series_names = df .columns
# 定义图表大小(长15,高8),必须放在plt.plot前面
plt.figure(figsize=(15,8))
# 将文件数据绘制为折线图
plt.plot(df, marker='o', markersize=3)  #marker设置标记样式和大小
plt.xlabel('横轴标题')   #设置横坐标名称
plt.ylabel('纵轴标题')   #设置纵坐标名称
plt.title('图表标题')    #设置图表标题
plt.grid()              #显示网格线
plt.legend(series_names)  #设置序列名称
plt.axhline(y=2, color='r', linestyle='--')   #在y轴上添加横向参考线。
plt.axvline(x=1, color='r', linestyle='--')   #在x轴上添加纵向参考线。
# 将绘制的图表显示在屏幕上
plt.show()
# 保存图表为png文件
# plt.savefig('filename.png')

绘制结果如下

1.2. 生成柱状图

1.2.1. 简单生成图表

代码如下

import pandas as pd
import matplotlib.pyplot as plt
# 从CSV文件读取数据并指定第一行为列名
data = pd.read_csv(r'E:\test.csv', header=0)
# 防止中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 获取列名和对应的值
columns = data.columns
values = data.iloc[0].values
# 绘制柱状图
plt.bar(columns, values)
plt.xlabel('横轴标题')
plt.ylabel('纵轴标题')
plt.title('图表标题')
# 将绘制的图表显示在屏幕上
plt.show()
# 保存图表为png文件
# plt.savefig('filename.png')

绘制结果如下

1.2.2. 设置柱状图格式

颜色代码

'b' 表示蓝色'g' 表示绿色'r' 表示红色'c' 表示青色'm' 表示品红色'y' 表示黄色'k' 表示黑色'w' 表示白色。

代码如下(在1.2.1目录的代码基础上增加了:图片长宽、柱子宽度/颜色、边框宽度/颜色)

import pandas as pd
import matplotlib.pyplot as plt
# 从CSV文件读取数据并指定第一行为列名
data = pd.read_csv(r'E:\test.csv', header=0)
# 防止中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 定义图表大小(长15,高8),必须放在plt.plot前面
plt.figure(figsize=(15,8))
# 获取列名和对应的值
columns = data.columns
values = data.iloc[0].values
# 绘制柱状图
plt.bar(columns, values,    #横轴坐标
        color='y',          #设置柱子颜色(黄色,见颜色代码)
        width = 0.8,        #设置柱子宽度
        edgecolor='k',      #设置柱子边框颜色(黑色,见颜色代码)
        linewidth=2         #设置柱子边框宽度
)
plt.xlabel('横轴标题')
plt.ylabel('纵轴标题')
plt.title('图表标题')
# 将绘制的图表显示在屏幕上
plt.show()
# 保存图表为png文件
# plt.savefig('filename.png')

绘制结果如下

2. 读取Excel文件

2.1. 生成折线图

2.1.1. 简单生成图表

代码如下

import pandas
import matplotlib.pyplot as plt
# 防止乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 读取Excel文件内容
df = pandas.read_excel(r'E:\test.xlsx', sheet_name='Sheet1')
column_names = df.columns.tolist()  #获取第1行名称
excel_rows = df.shape[0]            #获取行数
# 设置横轴数据,可以在Excel中获取,这里直接将行数从1开始遍历到末尾
x = [i for i in range(1, excel_rows+1)]
# 遍历第一行的列名
for col_name in column_names:
    # 通过列名提取画图的数据
    y = df[col_name].to_numpy()
    # 画图,执行横轴坐标,将线条图例名设置为第一行的列名
    plt.plot(x, y, label=col_name)
# 设置属性
plt.legend()  # 显示图例标题
plt.xlabel('横坐标名称')
plt.ylabel('纵坐标名称')
plt.title('折线图标题')
# plt.savefig('./filename.jpg')  # 保存图片
plt.show()  # 查看图片

绘制结果如下

2.1.2. 设置折线图格式

代码如下(在2.1.1目录的代码基础上增加了:图片长宽、标记样式、网格线、横纵轴参考线)

import pandas
import matplotlib.pyplot as plt
# 防止乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 读取Excel文件内容,如果读取csv文件,则使用pandas.read_csv
df = pandas.read_excel(r'E:\test.xlsx', sheet_name='Sheet1')
column_names = df.columns.tolist()  #读取第1行名称
excel_rows = df.shape[0]             #读取行数
# 定义图表大小(长15,高8),必须放在plt.plot前面
plt.figure(figsize=(15,8))
# 设置横轴数据,可以在Excel中获取,这里直接将行数从1开始遍历到末尾
x = [i for i in range(1, excel_rows+1)]
# 遍历第一行的列名
for col_name in column_names:
    # 通过列名提取画图的数据
    y = df[col_name].to_numpy()
    # 画图,执行横轴坐标,将线条图例名设置为第一行的列名
    plt.plot(x, y, label=col_name, marker='o', markersize=3)    #marker设置标记样式和大小
# 设置属性
plt.legend()  # 显示图例标题
plt.xlabel('横坐标名称')
plt.ylabel('纵坐标名称')
plt.title('折线图标题')
plt.grid()              #显示网格线
plt.axhline(y=2, color='r', linestyle='--')   #在y轴上添加横向参考线
plt.axvline(x=1, color='r', linestyle='--')   #在x轴上添加纵向参考线
# plt.savefig('./aa.jpg')  # 保存图片
plt.show()  # 查看图片

绘制结果如下

2.2. 生成柱状图

2.2.1. 简单生成图表

代码如下(单行数据)

import pandas
import matplotlib.pyplot as plt
# 防止乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 读取Excel文件内容
df = pandas.read_excel(r'E:\test.xlsx', sheet_name='Sheet1')
# 获取第一行的名称
column_names = df.columns.tolist()
# 去除第一行,并转置数据
data = df.T
# 创建柱状图,指定绘制的类型为柱状图(line:折线图(默认),bar:柱状图,barh:水平柱状图,hist:直方图,box:箱线图,kde:核密度估计图,density:密度图,area:面积图,scatter:散点图,hexbin:Hexbin 图(用于显示二维数据的分布情况))
data.plot(kind='bar')
# 设置柱子的名称(rotation旋转柱子标题的度数)
plt.xticks(range(len(column_names)), column_names, rotation=0)
# 添加标题和坐标轴标签
plt.title('图表标题')
plt.xlabel('横轴标题')
plt.ylabel('纵轴标题')
# 显示柱状图
plt.show()

绘制结果如下

多行数据需要增加修改图例名称的方法,默认从0开始,设置为从1开始。每个图例表示行数,比例1:第一行;2:第二行...

import pandas
import matplotlib.pyplot as plt
# 防止乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 读取Excel文件内容
df = pandas.read_excel(r'E:\test.xlsx', sheet_name='Sheet2')
# 获取第一行的名称
column_names = df.columns.tolist()
# 去除第一行,并转置数据
data = df.T
# 创建柱状图,指定绘制的类型为柱状图(line:折线图(默认),bar:柱状图,barh:水平柱状图,hist:直方图,box:箱线图,kde:核密度估计图,density:密度图,area:面积图,scatter:散点图,hexbin:Hexbin 图(用于显示二维数据的分布情况))
data.plot(kind='bar')
# 设置柱子的名称(rotation旋转柱子标题的度数)
plt.xticks(range(len(column_names)), column_names, rotation=0)
# 添加标题和坐标轴标签
plt.title('图表标题')
plt.xlabel('横轴标题')
plt.ylabel('纵轴标题')
# 修改图例名称(从1开始,1表示第1行数据...)
handles, labels = plt.gca().get_legend_handles_labels()
labels = [int(label)+1 for label in labels]
plt.legend(handles, labels)
# 显示柱状图
plt.show()

2.2.2. 设置柱状图格式

颜色代码

'b' 表示蓝色'g' 表示绿色'r' 表示红色'c' 表示青色'm' 表示品红色'y' 表示黄色'k' 表示黑色'w' 表示白色。

代码如下(在2.2.1目录的代码基础上增加了:图片长宽、柱子宽度/颜色、边框宽度/颜色)

import pandas
import matplotlib.pyplot as plt
# 防止乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 读取Excel文件内容
df = pandas.read_excel(r'E:\test.xlsx', sheet_name='Sheet1')
# 设置图片大小(长15,宽8)
fig = plt.figure(figsize=(15, 8))
ax = fig.add_subplot()
# 获取第一行的名称
column_names = df.columns.tolist()
# 去除第一行,并转置数据
data = df.T
# 创建柱状图
data.plot(
    kind='bar', #指定绘制的类型为柱状图(line:折线图(默认),bar:柱状图,barh:水平柱状图,hist:直方图,box:箱线图,kde:核密度估计图,density:密度图,area:面积图,scatter:散点图,hexbin:Hexbin 图(用于显示二维数据的分布情况))
    color='y',  #设置柱子颜色(黄色,见颜色代码)
    width=0.8,  # 设置柱子宽度
    edgecolor='k',  #设置柱子边框颜色(黑色,见颜色代码)
    linewidth=2,    #设置柱子边框宽度
    ax=ax           #设置图片大小
)
# 设置柱子的名称(rotation旋转柱子标题的度数)
plt.xticks(range(len(column_names)), column_names, rotation=0)
# 添加标题和坐标轴标签
plt.title('图表标题')
plt.xlabel('横轴标题')
plt.ylabel('纵轴标题')
# 显示柱状图
plt.show()

绘制结果如下

3. 将生成的折线图写入html文件

3.1. 直接写入图片

使用MarkupPy 将图片写入html文件

from MarkupPy import markup
# 添加图片,设置长、宽
page = markup.page()
page.add('<img src="./filename.png" alt="csv生成的折线图" width="800" height="500">')
# 写入文件
with open('./tmp.html', 'w') as file:
    file.write(str(page))

代码如下(以csv生成的折线图为例)

import pandas
import matplotlib.pyplot as plt
from MarkupPy import markup
# 设置csv文件路径
file = r'E:\test.csv'
# 防止中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 通过pandas读取文件内容
df = pandas.read_csv(file)
# 将文件第一行设置为序列名称
series_names = df .columns
# 将文件数据绘制为折线图
plt.plot(df)
plt.legend(series_names)  #设置序列名称
plt.xlabel('横轴标题')     #设置横坐标名称
plt.ylabel('纵轴标题')     #设置纵坐标名称
plt.title('图表标题')      #设置图表标题
# 保存图表为png文件
plt.savefig('./filename.png')
# 添加图片
page = markup.page()
page.add('<img src="./filename.png" alt="csv生成的折线图" width="800" height="500">')
# 写入文件
with open('./tmp.html', 'w') as file:
    file.write(str(page))

结果如下

3.2. 添加文字描述

文件描述见MarkupPy 的详细使用方法

https://www.jb51.net/python/2938017jt.htm

到此这篇关于Python读取csv、Excel文件生成图表的文章就介绍到这了,更多相关Python读取csv生成图表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 中if else 语句的作用及示例代码

    python 中if else 语句的作用及示例代码

    python中的if-else语句是一个判断性语句,既然是判断就要有条件以及满足条件与不满足的情况,一下将讲解一些if-else语句的知识,需要的朋友参考下吧
    2018-03-03
  • opencv python 傅里叶变换的使用

    opencv python 傅里叶变换的使用

    这篇文章主要介绍了opencv python 傅里叶变换的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python中dot函数运算过程总结

    python中dot函数运算过程总结

    dot函数为numpy库下的一个函数,主要用于矩阵的乘法运算,其中包括:向量内积、多维矩阵乘法和矩阵与向量的乘法,下面这篇文章主要给大家介绍了关于python中dot函数运算过程的相关资料,需要的朋友可以参考下
    2022-09-09
  • python同步windows和linux文件

    python同步windows和linux文件

    这篇文章主要为大家详细介绍了python同步windows和linux文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • python处理图片之PIL模块简单使用方法

    python处理图片之PIL模块简单使用方法

    这篇文章主要介绍了python处理图片之PIL模块简单使用方法,涉及Python使用PIL模块实现针对图片的锐化、绘制直线、绘制椭圆等相关技巧,需要的朋友可以参考下
    2015-05-05
  • python base64 decode incorrect padding错误解决方法

    python base64 decode incorrect padding错误解决方法

    这篇文章主要介绍了python base64 decode incorrect padding错误解决方法,本文使用把string补齐等号的方法解决了这个错误,需要的朋友可以参考下
    2015-01-01
  • Python通过cron或schedule实现爬虫的自动定时运行

    Python通过cron或schedule实现爬虫的自动定时运行

    自动定时运行爬虫是很多数据采集项目的基本需求,通过 Python 实现定时任务,可以保证数据采集的高效和持续性,本文将带大家了解如何在 Python 中使用 cron 和 schedule 来实现爬虫的自动定时运行,需要的朋友可以参考下
    2024-12-12
  • Python基于BeautifulSoup和requests实现的爬虫功能示例

    Python基于BeautifulSoup和requests实现的爬虫功能示例

    这篇文章主要介绍了Python基于BeautifulSoup和requests实现的爬虫功能,结合实例形式分析了Python使用BeautifulSoup和requests库爬取网站指定信息的相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • 使用Python的Matplotlib绘制渐变的彩色曲线

    使用Python的Matplotlib绘制渐变的彩色曲线

    这篇文章主要介绍了使用Python的Matplotlib绘制渐变的彩色曲线,Matplotlib是Python生态圈中应用最为广泛的2D绘图库,通过扩展工具包mplot3d,也可以绘制简单的3D模型,需要的朋友可以参考下
    2023-08-08
  • Python:type、object、class与内置类型实例

    Python:type、object、class与内置类型实例

    今天小编就为大家分享一篇Python:type、object、class与内置类型实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论