声明:代码是根据课件整理的,初学python,只是当做自己记个笔记。
一、导入数据 首先要导入数据,使用pandas库里的read_csv方法,将 .csv后缀的文件中的数据进行导入,导入后的数据结构是DataFrame。(DataFrame是pandas库中的一种数据结构,它类似excel,是一种二维表)
import pandas as pd
unrate = pd.read_csv("unrate.csv")
# 如果导入的.csv文件不在当前代码所在的文件下,则需要编辑路径。注意:路径内不能有中文
#导入的格式如:
# unrate = pd.read_csv(r"E:\Python\data\UNRATE.csv")
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
# 把unrate.csv的日期格式为1948/1/1,改为1948-01-01
print(unrate.head(12))
# DateFrame中的方法head:只看前12行
输出的结果如下:
DATE VALUE
0 1948-01-01 3.4
1 1948-02-01 3.8
2 1948-03-01 4.0
3 1948-04-01 3.9
4 1948-05-01 3.5
5 1948-06-01 3.6
6 1948-07-01 3.6
7 1948-08-01 3.9
8 1948-09-01 3.8
9 1948-10-01 3.7
10 1948-11-01 3.8
11 1948-12-01 4.0
关于日期相关的转换,即to_datetime方法的详细编写查看这里,大标题3
二、子图 其实就是先划定一个区域
fig = plt.figure(figsize=(3,3))
#采用figure方法来划区域
#figsize(3,3)指,每行3个图,一共3行
然后分别定义每个图在哪个位置
ax1 = fig.add_subplot(3,3,1)
ax2 = fig.add_subplot(3,3,4)
# 1和4代表图所在的位置,按Z字型的顺序数就可以了
文章图片
三、折线图 直接上多折线的图,单线图也就呼之欲出了
我想分别对1948-1952年间的1~12个月的失业率绘制曲线。
import pandas as pd
import matplotlib.pyplot as plt
unrate = pd.read_csv('unrate.csv')
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
unrate['MONTH'] = unrate['DATE'].dt.month
#这一步要重点说明
#将之前DATA里的MONTH作为x轴,从而比较不同年份在这12个月之间的折线图
colors = ['red','green','blue','orange','black']
for i in range(5)
start_index = i*12
end_index = (i+1)*12
subset = unrate[start_index,end_index]
label = str(1948 + i)
# label是图示中,各个颜色线代表哪一年份的标注
plt.plot(subset['MONTH'],subset['VALUE'],c = colors[i],label = lable)
#第一个subset指横坐标,第二个代表纵坐标
plt.legend(loc='best')
#图示的位置,best指系统自动找一个好位置
#也有upper right(放在右上角)等方法
plt.xlabel('MONTH,Integer')
plt.ylabel('Unemployment Rate,Percent')
# 横纵坐标分别代表什么
plt.title('Montly Unemployment Trends,1948-1952')
plt.show()
结果如下
文章图片
四、柱形图
比如对于某电影评分的汇总
查看各个不同的公司对一部电影的打分情况
import pandas as pd
import matplotlib.pyplot as plt
from numpy import arange
reviews = pd.read_csv('fandango_scores.csv')
num_cols = ['RT_user_norm','Metacritic_user_nom','IMDB_norm','Fandango_Ratingvalue','Fandango_Stars']
# 打分的公司的名称组成的数组
norms_reviews = reviews[num_cols]
#提取每个公司对于电影的分数
bar_heights = norm.reviews.ix[0,num_cols].values
#柱形的高度与他的values直接相关,用这个函数来写
bar_position = arange(5) + 1
# 1是第一个柱形的位置,5是x轴分配给柱形的总长度,间距是平分的
tick_position = range(1,6)
fig,ax = plt.subplots()
ax.bar(bar_position,bar_heights,0.3)
#这里要放入的是一个数
#这里的0.3是柱形的宽度
ax.set_xticks(tick_position)
# 这里,要放入的是一个list
ax.set_xticklabels(num_cols,rotation=45)
# 旋转45°方便观看
ax.set_xlabel('Rating Source')
ax.set_ylabel('Average Rating')
ax.set_title('Average User Rating for Avengers:Age of Ultron 2015')
ax.show()
arange和range的唯一区别:
arange返回的是一个数据,而range返回的是list
具体介绍,点击这里
代码运行结果如下
文章图片
五、散点图 在编辑散点图的时候,我们把前面的子图复习一下
还是上面电影评分的例子
import pandas as pd
import matplotlib.pyplot as plt
reviews = pd.read_csv("fandango_scores.csv")
num_cols = ['RT_user_norm','Metacritic_user_nom','IMDB_norm','Fandango_Ratingvalue','Fandango_Stars']
norm_reviews = reviews[num_cols]
# 两个list 一个是打分平台的名字,一个是分别对应的打分
fig = plt.figure(figsize=(2,1))
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)
ax1.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm'])
ax1.set_xlabel('Fandango')
ax1.set_ylabel('Rotten Tomatoes')
ax2.scatter(norm_reviews['RT_user_norm'], norm_reviews['Fandango_Ratingvalue'])
ax2.set_xlabel('Rotten Tomatoes')
ax2.set_ylabel('Fandango')
plt.show()
#两个图的x和y进行了交换,可以看出来他正好是关于x=y对称的
代码结果如下
文章图片
【python|Python可视化库Matplotlib的使用(折线图、柱状图、散点图)】以上是我自己对照课件总结的,但是还是不够完整,我只提取了我觉得有用的地方整理,其实还有直方图、四分图等,如果用到了,可以参考其他人整理的,更加丰富一点。
点击这里
推荐阅读
- Python|Numpy简单使用
- python|ViT模型关联的Layer Normalization研读(一)初学者
- python函数教程(global 和 nonlocal的详细用法)
- Python教程(os 与 sys 模块详细用法)
- #|k近邻算法实现--Knn
- python机器学习|从零到一实现神经网络(五):数学微分法更新权重参数
- #|Django models.py 表结构数据更新后应用到数据库中
- python|python 深度 视差 计算_开源双目视觉BM算法-Matlab/Python/Javascript
- OpenCV|解决error: (-215:Assertion failed) _src.empty() in function ‘cv::cvtColor‘