使用pandas中的DataFrame数据绘制柱状图

本文介绍如何使用Pandas库中的DataFrame方法绘制柱状图,通过简单的代码实现数据的可视化对比,对于不熟悉Excel的用户来说,这是一种更加便捷高效的数据处理方式。

折线图是数据分析的一种手段,但是有时候我们也需要柱状图进行不同数据的可视化量化对比。使用pandasDataFrame方法进行柱状图的绘制也是比较方便的。

把之前的折线图绘制代码修改一下如下:

  1 from pandas import Series,DataFrame

  2 from numpy.random import randn

  3 import numpy as np

  4 import matplotlib.pyplot as plt

  5 

  6 df = DataFrame(abs(randn(10,5)),columns=['A','B','C','D','E'],index = np.arange(0,100,10))

  7 df.plot(kind='bar')

  8 plt.show()

  9 


程序执行结果如下:


这种绘制方式确实是让人很欣喜,我觉得在一定程度上比Excel的数据处理要便捷很多。对于我这种对Excel一点都不熟悉的我来说,这种方法已经好多了。


### 使用 Pandas DataFrame 绘制柱状图 Pandas 提供了便捷的方法用于绘制各种类型的图表,其中包括柱状图。可以直接通过 `DataFrame.plot()` 方法实现可视化操作[^1]。 #### 基础示例:绘制单列或多列的柱状图 以下是一个完整的代码示例,演示如何使用 Pandas 创建一个简单的柱状图: ```python import pandas as pd import matplotlib.pyplot as plt # 构造示例数据 data = { 'Category': ['A', 'B', 'C', 'D'], 'Values': [23, 45, 56, 78], 'Scores': [34, 56, 78, 90] } df = pd.DataFrame(data) # 设置索引为 Category 列 df.set_index('Category', inplace=True) # 绘制 Values 和 Scores 的柱状图 ax = df[['Values', 'Scores']].plot(kind='bar', figsize=(8, 6)) # 添加标题和坐标轴标签 plt.title('Comparison of Values and Scores by Category') plt.xlabel('Category') plt.ylabel('Value') # 显示图例 plt.legend(title="Metrics") # 展示图形 plt.tight_layout() plt.show() ``` 上述代码中,我们先构建了一个包含三列的数据框(`Category`, `Values`, `Scores`),并将 `Category` 设定为索引。接着调用了 `plot()` 函数,并指定了参数 `kind='bar'` 来生成柱状图[^1]。 #### 高级定制:调整 X 轴日期显示格式 当处理时间序列数据时,可能需要对 X 轴上的日期格式进行特别设定以提高可读性。例如,在某些情况下,默认的时间戳可能会显得杂乱无章或者不够清晰。此时可以通过 Matplotlib 的 `FuncFormatter` 类来自定义日期样式[^2]。 ```python from datetime import datetime import matplotlib.dates as mdates # 示例时间序列数据 date_range = pd.date_range(start=datetime(2023, 1, 1), periods=10, freq='M') values = range(len(date_range)) df_time = pd.DataFrame({'Date': date_range, 'Value': values}).set_index('Date') # 定义日期格式化器 def format_date(x, pos=None): return x.strftime('%Y-%m') if isinstance(x, pd.Timestamp) else '' # 开始绘图 fig, ax = plt.subplots(figsize=(10, 6)) df_time.plot(ax=ax, kind='bar', rot=45) # 修改 X 轴刻度格式 ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m')) # 更新布局并展示图像 plt.title('Time Series Bar Chart Example') plt.xlabel('Month-Year') plt.ylabel('Count') plt.tight_layout() plt.show() ``` 在这个高级案例里,首先创建了一组按月递增的时间点作为横坐标的基准;随后引入了专门针对日期对象设计的格式转换逻辑,从而确保最终呈现出来的文字更加整齐有序[^2]。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值