📜  如何使用 Pandas 绘制基于时间序列的图表?(1)

📅  最后修改于: 2023-12-03 15:23:56.960000             🧑  作者: Mango

使用Pandas绘制基于时间序列的图表

Pandas是一个强大的Python库,用于处理和分析数据。其针对时间序列数据的功能包括对时间序列对象的快速转换和聚合,以及支持基于时间索引的切片、选取和数据过滤等。

在本文中,我们将介绍如何使用Pandas来绘制基于时间序列的图表。

准备工作

首先,我们需要安装Pandas库。您可以使用以下命令在Anaconda环境中进行安装:

!conda install pandas

或者,如果您是在命令行中使用Python环境,则可以使用以下命令:

pip install pandas
导入必要的库

在开始之前,请确保导入必要的库:

import pandas as pd
import matplotlib.pyplot as plt
获取数据

我们将使用COVID-19数据集作为示例数据。您可以从以下URL中获取数据:https://covid19.who.int/。

在本例中,我们将使用2021年1月1日至2021年6月30日的数据:

url = "https://covid19.who.int/WHO-COVID-19-global-data.csv"
df = pd.read_csv(url, parse_dates=['Date_reported'], index_col=['Date_reported'])
df = df.loc['2021-01-01':'2021-06-30']
print(df.head())

上述代码将打印以下内容:

               Country_code      Country WHO_region  New_cases  Cumulative_cases  New_deaths  Cumulative_deaths
Date_reported                                                                                                    
2021-01-01              AF  Afghanistan       EMRO         63             51526           3               2191
2021-01-02              AF  Afghanistan       EMRO         87             51613          10               2201
2021-01-03              AF  Afghanistan       EMRO        102             51715           4               2205
2021-01-04              AF  Afghanistan       EMRO        113             51828          11               2216
2021-01-05              AF  Afghanistan       EMRO         63             51891           3               2219
绘制折线图

我们将首先绘制全球每日新增病例数的趋势图。

df_world = df.groupby('Date_reported')[['New_cases']].sum()
df_world.plot(figsize=(15,6), title='Daily new cases worldwide', xlabel='Date', ylabel='Number of cases')
plt.show()

上述代码将绘制以下图表:

daily_new_cases_worldwide

我们还可以按地区绘制日新增病例数的趋势图。

df_region = df.groupby(['Date_reported', 'WHO_region'])[['New_cases']].sum().unstack()
df_region.plot(figsize=(15,6), title='Daily new cases by WHO region', xlabel='Date', ylabel='Number of cases')
plt.show()

上述代码将绘制以下图表:

daily_new_cases_by_region

绘制柱状图

我们可以使用Pandas绘制时间序列数据的柱状图。

我们将绘制每个国家的累计确诊病例数的柱状图。

df_country = df.groupby('Country')[['Cumulative_cases']].max().sort_values(by='Cumulative_cases', ascending=False).head(10)
df_country.plot(kind='bar', rot=45, figsize=(15,6), title='Top 10 countries by total cases')
plt.show()

上述代码将绘制以下图表:

top_10_countries_by_total_cases

结论

使用Pandas,我们可以轻松地处理和可视化时间序列数据。在本文中,我们介绍了如何使用Pandas来绘制基于时间序列的图表,包括折线图和柱状图。如果您想了解更多信息,请查看Pandas的文档:https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html#timeseries-plotting。