Pandasと時系列データ
PandasはPythonのデータ分析ライブラリで、データの操作や分析を容易に行うことができます。特に、時系列データの取り扱いに優れています。
時系列データとは、時間の経過とともに観測されるデータのことを指します。株価の変動、気温の変化、ウェブサイトの訪問者数など、日常生活の多くの現象は時系列データとして表現することができます。
Pandasでは、時系列データは主にSeries
やDataFrame
というデータ構造で扱います。これらのデータ構造は、ラベル付けされた軸を持つことで、データの操作や集計を容易に行うことができます。
また、Pandasは時系列データのインデックスとして日付や時間を扱うことができ、これにより時系列データのスライシングや集計、再サンプリングなどの操作を直感的に行うことができます。
次のセクションでは、Pandasでの時系列データの具体的な取り扱い方法について詳しく見ていきましょう。
Pandasでの時系列データの取り扱い
Pandasでは、時系列データを効率的に取り扱うための多くの機能が提供されています。以下に、その主な機能をいくつか紹介します。
データの読み込みとインデックス設定
まず、時系列データを読み込む際には、pandas.read_csv
などの関数を使用します。このとき、parse_dates
引数に日付を表す列を指定することで、自動的に日付型に変換することができます。
また、index_col
引数に日付列を指定することで、その列をインデックスとして設定することができます。これにより、日付に基づいたデータのアクセスや操作が容易になります。
import pandas as pd
df = pd.read_csv('data.csv', parse_dates=['date'], index_col='date')
データのスライシング
インデックスが日付型になっていると、日付を指定してデータをスライシングすることができます。例えば、特定の年や月のデータだけを抽出することが可能です。
# 2020年のデータを抽出
df_2020 = df['2020']
# 2020年6月のデータを抽出
df_june_2020 = df['2020-06']
データの再サンプリング
resample
メソッドを使用すると、データを一定の頻度で再サンプリングすることができます。これにより、日次データを月次データに変換したり、逆に月次データを日次データにアップサンプリングしたりすることが可能です。
# 日次データを月次データに変換(平均値を取る)
df_monthly = df.resample('M').mean()
# 月次データを日次データに変換(前方埋め)
df_daily = df.resample('D').ffill()
以上がPandasでの時系列データの基本的な取り扱い方です。次のセクションでは、これらのデータをどのように可視化するかについて見ていきましょう。
時系列データの可視化方法
時系列データの可視化は、データの傾向を理解したり、異常値を検出したりするのに非常に有用です。PandasはMatplotlibと連携して、時系列データの可視化を容易に行うことができます。
ラインプロット
時系列データの最も基本的な可視化方法はラインプロットです。これは、時間の経過とともにデータがどのように変化するかを示します。
import matplotlib.pyplot as plt
df.plot()
plt.show()
ヒストグラムとカーネル密度推定
ヒストグラムやカーネル密度推定は、データの分布を可視化するのに役立ちます。これにより、データの中心傾向や分散、外れ値の存在などを理解することができます。
df.plot(kind='hist', bins=50)
plt.show()
df.plot(kind='kde')
plt.show()
ボックスプロット
ボックスプロットは、データの四分位数を表示し、データの分布を理解するのに役立ちます。また、外れ値の検出にも使用されます。
df.plot(kind='box')
plt.show()
ヒートマップ
ヒートマップは、2つのカテゴリ変数の間の関係を可視化するのに役立ちます。時系列データの場合、一方の変数を時間(例えば、月や曜日)とすることで、時間の経過によるパターンを見つけることができます。
import seaborn as sns
pivot_table = df.pivot_table(values='value', index='month', columns='year')
sns.heatmap(pivot_table)
plt.show()
以上がPandasでの時系列データの可視化方法の一部です。次のセクションでは、これらの方法を用いた具体的な可視化例を見ていきましょう。
具体的な可視化例
ここでは、具体的なデータセットを用いて、前述の可視化方法を適用する例を見ていきましょう。ここでは、株価の時系列データを用いて、その動きを可視化します。
まず、必要なライブラリをインポートし、データを読み込みます。
import pandas as pd
import matplotlib.pyplot as plt
# データの読み込み
df = pd.read_csv('stock_price.csv', parse_dates=['date'], index_col='date')
ラインプロット
株価の動きをラインプロットで可視化します。
df['price'].plot()
plt.title('Stock Price Over Time')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()
ヒストグラム
株価の分布をヒストグラムで可視化します。
df['price'].plot(kind='hist', bins=50)
plt.title('Histogram of Stock Price')
plt.xlabel('Price')
plt.show()
ボックスプロット
株価の四分位数をボックスプロットで可視化します。
df['price'].plot(kind='box')
plt.title('Boxplot of Stock Price')
plt.show()
ヒートマップ
曜日ごとの株価の平均をヒートマップで可視化します。
import seaborn as sns
# 曜日ごとの平均株価を計算
pivot_table = df.pivot_table(values='price', index=df.index.dayofweek, columns=df.index.year)
# ヒートマップの作成
sns.heatmap(pivot_table)
plt.title('Heatmap of Average Stock Price by Day of Week')
plt.xlabel('Year')
plt.ylabel('Day of Week')
plt.show()
以上がPandasを用いた時系列データの可視化の一例です。これらの方法を活用することで、データの傾向を理解し、有益な洞察を得ることができます。次のセクションでは、これらの知識をまとめてみましょう。
まとめ
この記事では、Pandasを用いた時系列データの可視化について学びました。まず、Pandasと時系列データについての基本的な知識を確認し、次にPandasでの時系列データの取り扱い方法を見てきました。
その後、時系列データの可視化方法について学び、具体的な可視化例を通じてそれらの方法を適用する方法を見てきました。ラインプロット、ヒストグラム、ボックスプロット、ヒートマップなど、さまざまな可視化手法を用いてデータの傾向を理解し、有益な洞察を得ることができました。
Pandasは強力なデータ分析ライブラリであり、その機能を活用することで、時系列データの分析や可視化を効率的に行うことができます。これらの知識を活用して、自身のデータ分析プロジェクトに取り組んでみてください。データ分析の旅はこれからが本番です。頑張ってください!