IT评测·应用市场-qidao123.com技术社区

标题: 学习条记:使用 pandas 和 Seaborn 绘制柱状图 [打印本页]

作者: 光之使者    时间: 2025-1-2 23:38
标题: 学习条记:使用 pandas 和 Seaborn 绘制柱状图
学习条记:使用 pandas 和 Seaborn 绘制柱状图

前言

本日在使用 pandas 对数据进行处置惩罚并在 Python 中绘制可视化图表时,遇到了一些关于字体设置和 Seaborn 主题覆盖的小题目。这里将学习到的方法和注意事项做个总结,以便之后的项目中可以快速上手和排错。

一、设置 Matplotlib 字体

在 Python 中,Matplotlib 画图时默认使用的英文字体不支持中文,如果直接渲染中文,往往会表现成方块或乱码。为了解决这个题目,我们可以通过修改 rcParams 来设置一个支持中文的字体,比方 SimHei(黑体)或 Microsoft YaHei。
下面是一段简朴的函数,用于快速切换中文字体:
  1. def set_chinese_font(font_name='SimHei'):
  2.     """
  3.     设置Matplotlib的中文字体。
  4.     :param font_name: 字体名称,默认使用'SimHei'。
  5.                       其他常见中文字体如'Microsoft YaHei'。
  6.     """
  7.     import matplotlib.pyplot as plt
  8.     plt.rcParams['font.sans-serif'] = [font_name]  # 设置中文字体
  9.     plt.rcParams['axes.unicode_minus'] = False      # 正常显示负号
复制代码
  注意:如果体系中没有安装对应字体,设置大概不会生效。可以自行在体系(如 Windows 的 C:\Windows\Fonts)安装相应的字体文件。
  
二、Seaborn 与 Matplotlib 主题的冲突

很多时候,我们还会喜欢使用 Seaborn 自带的主题来让图表看起来更美观,比方:
  1. import seaborn as sns
  2. sns.set(style="whitegrid")
复制代码
然而,一些版本的 Seaborn 大概会覆盖你在 Matplotlib 中设置的字体;或者你在差异地方多次调用差异的主题,也大概引发冲突。常看法决方法是要么只使用 Seaborn 的主题而不手动改字体,要么先调用 Seaborn 的主题再调用中文字体,让中文字体占终极优先级。
比方,如果你想保留白色网格风格,但又希望用黑体表现中文,可以这样写:
  1. import seaborn as sns
  2. sns.set(style="whitegrid")
  3. # 然后设置中文字体set_chinese_font('SimHei')
复制代码
如果两者仍旧冲突,建议去掉此中一个或实验删除 Matplotlib 缓存,让它重新扫描体系字体。

三、Seaborn barplot 的工作原理

在使用 Seaborn 绘制柱状图时,常见用法是:
  1. import seaborn as sns
  2. bar_plot = sns.barplot(
  3.     x='学院',
  4.     y='人数',
  5.     data=college_counts,
  6.     palette='viridis'
  7. )
复制代码
不需要再手动把 bar_plot “放进” Matplotlib,由于 Seaborn 会自动在当前的 Matplotlib Figure 中天生 Axes,返回给我们的是一个已经绑定到该 Figure 的对象。因此,只要最后 plt.show() 或 plt.savefig(),就能看到或生存这张图表。
1. 同一个坐标多个柱状(同一个 x 有多个柱子)

当我们想要在同一个 x 值下表现多个柱子(比方,同一个学院下,分别统计“参保”和“未参保”人数),可以使用 hue 参数:
  1. bar_plot = sns.barplot(
  2.     x='学院',
  3.     y='人数',
  4.     data=grouped_df,
  5.     hue='2025年参保情况',   # 在同一个学院里区分参保和未参保
  6.     palette='viridis',
  7.     dodge=True,            # True:并排放置;False:重叠放置
  8.     legend=True            # 是否显示图例
  9. )
复制代码
关键参数说明


2. 怎样得到 grouped_df

通常,我们会有一个 DataFrame 包含诸如“学院”、“2025年参保环境”、“姓名”等列。要得到分组后的每组人数,可以这样:
  1. grouped_df = df.groupby(['学院', '2025年参保情况']).size().reset_index(name='人数')
复制代码

然后 grouped_df 就可以拿来给 Seaborn 的 barplot 使用了。

四、总结

通过这些本领,我们就可以轻松地使用 pandas + Seaborn 绘制各种各样的统计图表,展示数据中的分类环境、分布环境以及关系,满足日常数据分析与可视化需求。

   延伸阅读
  
  至此,本日的学习心得就整理完毕啦! 希望这篇条记能帮你更快掌握在 Python 中处置惩罚中文表现、使用 Seaborn 绘制柱状图,以及在同一个坐标轴上并排展示多个柱子的本领。祝你在数据可视化之路上更进一步!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4