← 返回首页
Python3基础教程(九十四)
发表时间:2023-04-03 23:26:33
图表

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()

运行效果: