[Python] Pandas – CSVファイルのデータでグラフを作成する方法

Pandasを使用してCSVファイルからデータを読み込み、グラフを作成するには、まずpandasでデータを読み込み、matplotlibseabornなどのライブラリを使って可視化します。

pandas.read_csv()でCSVファイルを読み込み、DataFrameとしてデータを取得します。

その後、DataFrame.plot()メソッドを使って簡単にグラフを作成できます。

matplotlib.pyplotをインポートしておくと、さらにカスタマイズが可能です。

この記事でわかること
  • Pandasを使ったグラフ作成の基本
  • Matplotlibによるグラフのカスタマイズ
  • Seabornを活用した高度な可視化
  • CSVデータを用いた応用的なグラフ作成
  • データ分析に役立つグラフの作成方法

目次から探す

グラフ作成に必要なライブラリ

Pythonでデータを可視化するためには、いくつかのライブラリを使用します。

ここでは、特に人気のあるmatplotlibseaborn、そしてpandasの基本的な使い方について解説します。

matplotlibのインストール

matplotlibは、Pythonでグラフを描画するための基本的なライブラリです。

以下のコマンドを使用してインストールできます。

pip install matplotlib

seabornのインストール

seabornは、matplotlibを基にした高水準のデータ可視化ライブラリです。

美しいグラフを簡単に作成できるため、データ分析において非常に便利です。

インストールは以下のコマンドで行います。

pip install seaborn

pandas.plot()の基本

pandasはデータ操作のためのライブラリですが、データフレームから直接グラフを描画する機能も持っています。

DataFrame.plot()メソッドを使用することで、簡単にグラフを作成できます。

import pandas as pd
import matplotlib.pyplot as plt
# サンプルデータの作成
data = {'年': [2020, 2021, 2022], '売上': [100, 150, 200]}
df = pd.DataFrame(data)
# 折れ線グラフの作成
df.plot(x='年', y='売上', kind='line')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()

matplotlibとseabornの違い

スクロールできます
特徴matplotlibseaborn
基本的な機能グラフの描画高度な可視化機能
デフォルトのスタイルシンプル美しいデフォルトスタイル
データの扱い手動での設定が多いデータフレームとの統合が容易
グラフの種類多様なグラフが描ける特に統計的なグラフに強い

このように、matplotlibは基本的なグラフ描画に適しており、seabornはより美しいグラフを簡単に作成するためのライブラリです。

用途に応じて使い分けることが重要です。

Pandasでグラフを作成する基本手順

pandasを使用すると、データフレームから簡単にグラフを作成できます。

ここでは、DataFrame.plot()メソッドを使った基本的なグラフ作成手順を解説します。

DataFrame.plot()の使い方

DataFrame.plot()メソッドを使用することで、データフレームのデータを基にさまざまな種類のグラフを描画できます。

以下は基本的な使い方の例です。

import pandas as pd
import matplotlib.pyplot as plt
# サンプルデータの作成
data = {'年': [2020, 2021, 2022], '売上': [100, 150, 200]}
df = pd.DataFrame(data)
# グラフの作成
df.plot(x='年', y='売上')
plt.show()

折れ線グラフの作成

折れ線グラフは、データの変化を視覚的に表現するのに適しています。

以下のコードで折れ線グラフを作成できます。

df.plot(x='年', y='売上', kind='line')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()

棒グラフの作成

棒グラフは、カテゴリごとの比較を行うのに便利です。

以下のコードで棒グラフを作成できます。

df.plot(x='年', y='売上', kind='bar')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()

散布図の作成

散布図は、2つの変数間の関係を視覚化するのに役立ちます。

以下のコードで散布図を作成できます。

# サンプルデータの作成
data = {'売上': [100, 150, 200], '利益': [20, 30, 50]}
df = pd.DataFrame(data)
# 散布図の作成
df.plot(kind='scatter', x='売上', y='利益')
plt.title('売上と利益の関係')
plt.xlabel('売上')
plt.ylabel('利益')
plt.show()

ヒストグラムの作成

ヒストグラムは、データの分布を視覚化するのに適しています。

以下のコードでヒストグラムを作成できます。

# サンプルデータの作成
data = {'売上': [100, 150, 200, 150, 100, 200, 250]}
df = pd.DataFrame(data)
# ヒストグラムの作成
df['売上'].plot(kind='hist', bins=5)
plt.title('売上の分布')
plt.xlabel('売上')
plt.ylabel('頻度')
plt.show()

グラフのカスタマイズ

グラフをより見やすくするために、カスタマイズが可能です。

タイトルやラベルの追加

グラフにタイトルや軸ラベルを追加することで、情報を明確に伝えることができます。

plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')

軸の範囲設定

軸の範囲を設定することで、特定のデータに焦点を当てることができます。

plt.xlim(2019, 2023)  # x軸の範囲を設定
plt.ylim(0, 300)      # y軸の範囲を設定

凡例の表示

凡例を表示することで、複数のデータ系列を区別しやすくなります。

plt.legend(['売上'])

これらのカスタマイズを組み合わせることで、より効果的なグラフを作成できます。

matplotlibを使ったグラフのカスタマイズ

matplotlibを使用すると、グラフの見た目を細かくカスタマイズできます。

ここでは、グラフのサイズ設定や複数のグラフの表示、色やスタイルの変更方法について解説します。

plt.figure()でグラフのサイズを設定

plt.figure()を使用することで、グラフのサイズを指定できます。

以下のコードでは、幅と高さをインチ単位で設定しています。

import pandas as pd
import matplotlib.pyplot as plt
# サンプルデータの作成
data = {'年': [2020, 2021, 2022], '売上': [100, 150, 200]}
df = pd.DataFrame(data)
# グラフのサイズを設定
plt.figure(figsize=(10, 5))  # 幅10インチ、高さ5インチ
df.plot(x='年', y='売上')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()

複数のグラフを並べて表示する方法

plt.subplot()を使用することで、複数のグラフを同じウィンドウに並べて表示できます。

以下の例では、2行1列の配置で2つのグラフを表示しています。

# サンプルデータの作成
data1 = {'年': [2020, 2021, 2022], '売上': [100, 150, 200]}
data2 = {'年': [2020, 2021, 2022], '利益': [20, 30, 50]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 1つ目のグラフ
plt.subplot(2, 1, 1)  # 2行1列の1番目
df1.plot(x='年', y='売上', title='年ごとの売上')
plt.ylabel('売上')
# 2つ目のグラフ
plt.subplot(2, 1, 2)  # 2行1列の2番目
df2.plot(x='年', y='利益', title='年ごとの利益')
plt.ylabel('利益')
plt.tight_layout()  # レイアウトの調整
plt.show()

グリッド線の追加

グリッド線を追加することで、データの読み取りが容易になります。

plt.grid()を使用してグリッド線を表示できます。

df.plot(x='年', y='売上')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.grid(True)  # グリッド線を表示
plt.show()

色やスタイルの変更

グラフの色やスタイルを変更することで、視覚的な印象を変えることができます。

以下の例では、色と線のスタイルを変更しています。

df.plot(x='年', y='売上', color='orange', linestyle='--', linewidth=2)
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.grid(True)
plt.show()

グラフの保存方法

作成したグラフは、画像ファイルとして保存することができます。

plt.savefig()を使用して、指定したファイル名で保存します。

df.plot(x='年', y='売上')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.grid(True)
# グラフをPNG形式で保存
plt.savefig('sales_by_year.png')
plt.show()
(グラフが表示され、'sales_by_year.png'として保存されます)

このように、matplotlibを使ったグラフのカスタマイズは多岐にわたります。

これらの機能を活用して、より効果的なデータ可視化を行いましょう。

seabornを使った高度な可視化

seabornは、matplotlibを基にした高水準のデータ可視化ライブラリで、特に統計的なデータの可視化に強みを持っています。

ここでは、seabornの基本的な使い方から、さまざまなグラフの作成方法、カスタマイズ方法について解説します。

seabornの基本的な使い方

まず、seabornを使用するためには、ライブラリをインストールする必要があります。

以下のコマンドでインストールできます。

pip install seaborn

次に、seabornをインポートし、データを準備して基本的なグラフを作成します。

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
# サンプルデータの作成
data = {'年': [2020, 2021, 2022], '売上': [100, 150, 200]}
df = pd.DataFrame(data)
# 基本的な折れ線グラフの作成
sns.lineplot(data=df, x='年', y='売上')
plt.title('年ごとの売上')
plt.show()

seabornでの折れ線グラフ作成

seabornを使用すると、簡単に美しい折れ線グラフを作成できます。

以下のコードでは、データフレームを使って折れ線グラフを描画しています。

sns.lineplot(data=df, x='年', y='売上', marker='o')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()

seabornでのヒートマップ作成

ヒートマップは、データの相関関係を視覚化するのに非常に便利です。

以下のコードでは、相関行列をヒートマップとして表示しています。

# サンプルデータの作成
data = {'売上': [100, 150, 200], '利益': [20, 30, 50], 'コスト': [80, 120, 150]}
df = pd.DataFrame(data)
# 相関行列の計算
correlation_matrix = df.corr()
# ヒートマップの作成
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('相関行列のヒートマップ')
plt.show()

seabornでのペアプロット作成

ペアプロットは、複数の変数間の関係を視覚化するのに役立ちます。

以下のコードでは、ペアプロットを作成しています。

# サンプルデータの作成
data = {
    '売上': [100, 150, 200, 250, 300],
    '利益': [20, 30, 50, 70, 90],
    'コスト': [80, 120, 150, 180, 210]
}
df = pd.DataFrame(data)
# ペアプロットの作成
sns.pairplot(df)
plt.title('ペアプロット')
plt.show()

seabornでのカスタマイズ

seabornでは、グラフのスタイルや色を簡単にカスタマイズできます。

以下の例では、スタイルを変更し、色を指定しています。

# スタイルの設定
sns.set(style='whitegrid')
# 折れ線グラフの作成
sns.lineplot(data=df, x='年', y='売上', color='blue', marker='o', linestyle='--')
plt.title('年ごとの売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()

このように、seabornを使うことで、データの可視化がより簡単かつ美しく行えます。

さまざまなグラフを活用して、データ分析を効果的に進めましょう。

CSVデータを使った応用的なグラフ作成

CSVファイルは、データ分析や可視化において非常に一般的な形式です。

ここでは、複数のCSVファイルを結合したり、時系列データやグループ化したデータを可視化する方法について解説します。

複数のCSVファイルを結合してグラフを作成

複数のCSVファイルを結合することで、より大きなデータセットを作成し、グラフを描画することができます。

以下の例では、2つのCSVファイルを結合しています。

import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルの読み込み
df1 = pd.read_csv('sales_2020.csv')
df2 = pd.read_csv('sales_2021.csv')
# データフレームの結合
df = pd.concat([df1, df2], ignore_index=True)
# 売上の折れ線グラフを作成
df.plot(x='年', y='売上', kind='line')
plt.title('2020年と2021年の売上')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()
(結合したデータの折れ線グラフが表示されます)

時系列データの可視化

時系列データを可視化することで、時間の経過に伴う変化を把握できます。

以下の例では、日付をインデックスにしたデータフレームを使用しています。

# サンプルデータの作成
data = {
    '日付': pd.date_range(start='2020-01-01', periods=12, freq='M'),
    '売上': [100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650]
}
df = pd.DataFrame(data)
df.set_index('日付', inplace=True)
# 時系列データの折れ線グラフを作成
df.plot()
plt.title('月ごとの売上')
plt.xlabel('日付')
plt.ylabel('売上')
plt.show()
(時系列データの折れ線グラフが表示されます)

グループ化したデータの可視化

データをグループ化することで、カテゴリごとの集計を行い、可視化することができます。

以下の例では、カテゴリごとの売上を棒グラフで表示しています。

# サンプルデータの作成
data = {
    'カテゴリ': ['A', 'B', 'A', 'B', 'A', 'B'],
    '売上': [100, 150, 200, 250, 300, 350]
}
df = pd.DataFrame(data)
# カテゴリごとの売上をグループ化
grouped = df.groupby('カテゴリ').sum()
# 棒グラフの作成
grouped.plot(kind='bar')
plt.title('カテゴリごとの売上')
plt.xlabel('カテゴリ')
plt.ylabel('売上')
plt.show()
(カテゴリごとの売上の棒グラフが表示されます)

ピボットテーブルを使ったグラフ作成

ピボットテーブルを使用することで、データを集計し、可視化することができます。

以下の例では、売上データをピボットテーブルに変換し、ヒートマップを作成しています。

# サンプルデータの作成
data = {
    '年': [2020, 2020, 2021, 2021],
    '月': ['1月', '2月', '1月', '2月'],
    '売上': [100, 150, 200, 250]
}
df = pd.DataFrame(data)
# ピボットテーブルの作成
pivot_table = df.pivot_table(values='売上', index='月', columns='年')
# ヒートマップの作成
sns.heatmap(pivot_table, annot=True, cmap='coolwarm')
plt.title('月ごとの売上(年別)')
plt.show()
(ピボットテーブルを使ったヒートマップが表示されます)

データのフィルタリングとグラフ作成

特定の条件に基づいてデータをフィルタリングし、その結果を可視化することも可能です。

以下の例では、売上が200以上のデータをフィルタリングしてグラフを作成しています。

# サンプルデータの作成
data = {
    '年': [2020, 2021, 2020, 2021],
    '売上': [100, 250, 200, 300]
}
df = pd.DataFrame(data)
# 売上が200以上のデータをフィルタリング
filtered_df = df[df['売上'] >= 200]
# フィルタリングしたデータの棒グラフを作成
filtered_df.plot(x='年', y='売上', kind='bar')
plt.title('売上が200以上のデータ')
plt.xlabel('年')
plt.ylabel('売上')
plt.show()
(フィルタリングしたデータの棒グラフが表示されます)

これらの手法を活用することで、CSVデータを使ったさまざまな応用的なグラフ作成が可能になります。

データ分析や可視化の幅を広げて、より深い洞察を得ることができるでしょう。

よくある質問

CSVファイルが大きすぎて読み込めない場合は?

CSVファイルが大きすぎてメモリに収まらない場合、以下の方法を試してみてください。

  • 分割読み込み: pandasread_csv()関数chunksizeオプションを指定して、データを分割して読み込むことができます。

これにより、メモリの使用量を抑えることができます。

  for chunk in pd.read_csv('large_file.csv', chunksize=10000):
      process(chunk)  # 各チャンクを処理する関数
  • 必要な列だけを読み込む: usecolsオプションを使って、必要な列だけを指定して読み込むことで、メモリの使用量を減らすことができます。
  df = pd.read_csv('large_file.csv', usecols=['列名1', '列名2'])
  • データ型の指定: dtypeオプションを使って、各列のデータ型を指定することで、メモリの使用量を最適化できます。

グラフが表示されない場合の対処法は?

グラフが表示されない場合、以下の点を確認してください。

  • plt.show()の呼び出し: グラフを表示するためには、必ずplt.show()を呼び出す必要があります。

これがないと、グラフは表示されません。

  • Jupyter Notebookの設定: Jupyter Notebookを使用している場合、%matplotlib inlineを実行して、グラフをノートブック内に表示させる必要があります。
  • エラーメッセージの確認: エラーメッセージが表示されている場合、その内容を確認し、問題を特定してください。

例えば、データが空である場合や、指定した列名が存在しない場合などです。

グラフの見た目をもっとカスタマイズしたい場合は?

グラフの見た目をカスタマイズするためには、以下の方法を試してみてください。

  • 色やスタイルの変更: colorlinestyleオプションを使って、グラフの色や線のスタイルを変更できます。
  df.plot(color='red', linestyle='--')
  • タイトルやラベルの追加: plt.title(), plt.xlabel(), plt.ylabel()を使って、グラフにタイトルや軸ラベルを追加できます。
  • 凡例の表示: plt.legend()を使って、グラフに凡例を追加することができます。
  • グリッド線の追加: plt.grid(True)を使って、グリッド線を表示することで、データの読み取りを容易にできます。
  • スタイルの設定: seabornmatplotlibのスタイルを使用して、全体の見た目を変更することができます。

例えば、sns.set_style('whitegrid')を使って、背景を白いグリッドに設定できます。

これらのカスタマイズを組み合わせることで、より魅力的でわかりやすいグラフを作成することができます。

まとめ

この記事では、Pythonのpandasseabornを使用して、CSVファイルからデータを読み込み、さまざまなグラフを作成する方法について詳しく解説しました。

特に、データの可視化における基本的な手法から応用的なテクニックまでを紹介し、実際のコード例を通じて具体的な操作を示しました。

これを機に、データ分析や可視化のスキルを向上させ、実際のプロジェクトに活かしてみてはいかがでしょうか。

  • URLをコピーしました!
目次から探す