pandas是基于NumPy的一个数据分析工具,pandas可以使用Matplotlib轻松实现图表操作。
1.plot方法
使用pandas.DataFrame的plot方法绘制图像会按照数据的每一列绘制一条曲线,默认按照列columns的名称在适当的位置展示图例,比matplotlib绘制节省时间,且DataFrame格式的数据更规范,方便向量化及计算。
DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None, sharey=False, layout=None, figsize=None, use_index=True, title=None, grid=None, legend=True, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, table=False, yerr=None, xerr=None, secondary_y=False, sort_columns=False, **kwds)
但是plot()函数里的参数过于繁多,这里我不相信阐释。
2.图表类型
这里我们以柱状图为例,了解pandas生成图表的简单应用。
# -*- coding: utf-8 -*-
# @Time : 2023/4/3 22:10
# @File : chart_demo.py
# @Software : PyCharm
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
# 设置 可视化风格
plt.style.use('tableau-colorblind10')
# 以下代码从全局设置字体为SimHei(黑体),解决显示中文问题
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决中文字体下坐标轴负数的负号显示问题
plt.rcParams['axes.unicode_minus'] = False
# 读取csv文件
df = pd.read_csv('movie250.csv', encoding="utf-8")
#获取电影分数集合
scores = df['score'].values
# round(x,2) 小数点后精确两位
avg_score = round(np.mean(scores),2) # 平均值
max_score = round(np.max(scores),2) # 最大值
min_score = round(np.min(scores),2) # 最小值
print("最高分:", max_score, ",最低分:", min_score, ",平均分:", avg_score)
score_data=[['最高分', max_score], ['平均分', avg_score], ['最低分', min_score]]
#构造DataFrame
score_df = pd.DataFrame(score_data, columns=['统计', '分数'])
print(score_df)
# 生成柱状图的基本用法
# score_df.plot(kind='bar')
# 生成柱状图简单的用法
#bar1 = plt.bar(score_df['统计'],score_df['分数'])
# 指定柱状的颜色和柱状粗细
# bar1 = plt.bar(score_df['统计'],score_df['分数'],width = 0.35,color=['#B22222', '#90EE90', '#FF69B4'])
#柱状的颜色指定为渐变色
my_colors = cm.Blues(np.arange(score_df['统计'].shape[0]) / score_df['统计'].shape[0])
bar1 = plt.bar(score_df['统计'],score_df['分数'],width = 0.35,color=my_colors)
# 标注数值
plt.bar_label(bar1)
plt.show()
运行效果:
