文章目录
- 折线图
- 1.1 numpy介绍
- 1.2 预测趋势
- 1.3 折线图流程工具 Pandas
- 1.3.1 读取并生成 CSV
- 1.3.2 输出列数据
- 1.3.3 画折线图
- 1.5 添加横纵坐标,标题 屏幕属性
- 1.4 画双折线图
- 1.5 扩展:做三线图
折线图
1.1 numpy介绍
- 上节课我们学了柱状图, 通过柱状图可以了解, numpy主要是科学计算库, 提供了用于处理多维数组及其相关功能的工具。,用于处理任意维度的数组.
- 上节课, 我们了解 列表转数组, 和 数组转换列表.
- NumPy可用于执行各种数学操作,例如,随机数生成等。
- NumPy数组(称为ndarray)是Python中的一种数据结构,用于表示同构的多维数组。NumPy还具有广泛的应用程序,包括科学计算、统计学、数据分析和机器学习等。
1.2 预测趋势
- 前期使用柱状图,能分析统计, 但是想预测趋势, 就显得有些不那么明显.
- 思考一下, 下面的情况如果使用 柱状图可以有效的预测么?
- 思考一下, 下面的情况如果使用 柱状图可以有效的预测么?
- 预测趋势的 折线图.
- 柱状图和折线图的区别
1.3 折线图流程工具 Pandas
- 折线 流程图流程 :
- 数据读取, 在数据分析中,有一个能够提供高性能、易于使用的数据结构和数据分析工具:
Pandas
- Pandas 一个强大的分析结构化数据的工具集,基础是Numpy(提供高性能的矩阵运算)
- 需要安装 pip install pandas
- 数据读取, 在数据分析中,有一个能够提供高性能、易于使用的数据结构和数据分析工具:
- Pandas 可以从各种文件格式
- 比如
CSV、JSON、SQL、Microsoft Excel
导入数据。 - 例如: 我们先来认识一下CSV文件
- 比如
1.3.1 读取并生成 CSV
-
Pandas 读取 CVS文件:
-
提供了方法
read_csv()
方法可以读取CSV文件的数据.pd.read_csv("文件路径")
# pandas使用 import pandas as pd #通过read_csv("路径") 读取磁盘地址 data = pd.read_csv("D:\城市.csv") print(data)
-
也提供了写出方法
data.to_scv("文件路径")
# 使用pandas工具进行操作文件 import pandas as pd #1.读取read_csv()文件. data = pd.read_csv("D:\城市.csv") print(data) #2. 将读取的数据写出到磁盘 data.to_csv("D:\城市2.csv")
1.3.2 输出列数据
-
如何取出列数据中的内容, 可以像字典一样
数据['列名']
,列数据可以根据列名去获取值。数据[列明][索引]
列数据中的元素, 可以通过索引获取。
# 使用pandas工具进行操作文件 import pandas as pd #1.读取read_csv()文件. data = pd.read_csv("D:\北京.csv") print(data) print("-"*40)#华丽分割线 #1.1 例如字典的方式 -->数据名[索引方式] #1.1.1可以拿到 星期数据 week = data["星期"] temp = data["温度"] print(week,temp) print("-"*40)#华丽分割线 #1.1.2 如何拿到星期的周一, 或者 温度的一个元素 week_1= data["星期"][0] temp_1= data["温度"][1] print(week_1,temp_1) #2. 将读取的数据写出到磁盘 #data.to_csv("D:\北京.csv")
1.3.3 画折线图
-
还记得上次画的柱状图么?
- 需要使用matplotlib工具pyplot
-
导入工具包,数据结构的分析工具
- pandas 工具包导入
-
注意乱码问题
''' 开始画折线图,需要导入两个工具包 1. matplotlib 出图 2. 读取数据 使用pandas ''' #导入使用工具pyplot from matplotlib import pyplot as plt # 获取csv的工具 import pandas as pd #通过pandas将数据源读取进来 data = pd.read_csv("D:\北京.csv") print(data)#测试是否读入成功 #获取列明 x = data["星期"] y = data["温度"] #处理乱码问题 plt.rcParams["font.sans-serif"]=["SimHei"] plt.rcParams["axes.unicode_minus"]=False #绘制折现图 plt.plot(x,y) #将图片保存到磁盘 plt.savefig("D:/1.png") plt.show()
1.5 添加横纵坐标,标题 屏幕属性
-
相当于在基础折线图基础上进行修饰
#设置x轴和y轴信息 plt.xlabel("星期", loc='right') plt.ylabel('温度(℃)', loc='top')
-
添加标题 。
- 使用
title()
标签.
#设置图标标题 plt.title("最近一周最高温度_北京", fontsize=30, fontweight='heavy', fontstyle='italic', backgroundcolor='blue')
- 使用
-
完整代码
''' 开始画折线图,需要导入两个工具包 1. matplotlib 出图 2. 读取数据 使用pandas ''' # 导入使用工具pyplot from matplotlib import pyplot as plt # 获取csv的工具 import pandas as pd # 通过pandas将数据源读取进来 data = pd.read_csv("D:\北京.csv") print(data) # 测试是否读入成功 # 获取列明 x = data["星期"] y = data["温度"] # 处理乱码问题 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False #设置x轴和y轴信息 plt.xlabel("星期", loc='right') plt.ylabel('温度(℃)', loc='top') #设置图标标题 plt.title("最近一周最高温度_北京", fontsize=30, fontweight='heavy', fontstyle='italic', backgroundcolor='blue') # 绘制折现图 plt.plot(x, y) # 将图片保存到磁盘 # plt.savefig("D:/1.png") plt.show()
1.4 画双折线图
- 画双折线图,通过上图可以发现 有两条折线
- 根据上图所示需要使用两个城市的数据.
- 城市.csv 数据.
import pandas as pd from matplotlib import pyplot as plt data = pd.read_csv("D:\两个城市.csv") print(data) #获取列名称 x= data["星期"] y_1 = data["北京"] y_2 = data["青岛"] # 处理乱码问题 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False #绘制折线图 plt.plot(x,y_1) plt.plot(x,y_2) plt.show()
星期,北京,青岛 周一,22,21 周二,25,22 周三,24,20 周四,27,21 周五,26,21 周六,27,22 周日,28,21
- 添加标题, 背景颜色. 坐标轴x和y
- 修饰折线图的线条风格
# plt.plot( x轴数据, y轴数据, 图例名, 线条颜色, 线条风格, 线宽, 透明度 )
# plt.plot( x, y , label='XX',color='XX',linestyle='XX',linewidth=X, alpha=X)
plt.plot(x,y1,label='北京',color='red',linestyle='--',linewidth=5,alpha=1)
plt.plot(x,y2,label='青岛',color='blue',linestyle=':',linewidth=2,alpha=1)
#添加 图示例
plt.legend(loc='upper left')
1.5 扩展:做三线图
- 已知 数据如下:请输出折线图
星期,北京,青岛,上海
周一,22,21,23
周二,25,22,25
周三,24,20,24
周四,27,21,26
周五,26,21,24
周六,27,22,27
周日,28,21,25
from matplotlib import pyplot as plt
import pandas as pd
data = pd.read_csv('数据.csv') # 获取日期数据
print(data)
x = data["星期"]
y1 = data["北京"]
y2 = data["青岛"]
y3 = data["上海"]
fig = plt.figure(figsize=(10,5))
# # xticks(位置列表,每个位置的具体信息,字体)
plt.xlabel("星期",loc='right')
plt.ylabel('温度(℃)',loc='top')
# plt.plot( x轴数据, y轴数据, 图例名, 线条颜色, 线条风格, 线宽, 透明度 )
# plt.plot( x, y , label='XX',color='XX',linestyle='XX',linewidth=X, alpha=X)
plt.plot(x,y1,label='北京',color='red',linestyle='--',linewidth=5,alpha=1)
plt.plot(x,y2,label='青岛',color='blue',linestyle=':',linewidth=2,alpha=1)
plt.plot(x,y3,label='上海',color='green',linestyle='-.',linewidth=3,alpha=1)
#乱码处理
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 添加图例----------------------------1
plt.legend(loc='upper left')
#plt.savefig('双折线图.png')
plt.show()