[Python]Pandasの仕組みを徹底解説!データ処理の基本を学ぼう

はじめに

Pandasは、Pythonでデータ処理を行うための強力なライブラリです。データフレームという表形式のデータ構造を扱うことができ、データの読み込み、加工、クリーニング、集計など、さまざまな操作を簡単に行うことができます。

この記事では、Pandasの基本的な仕組みと機能について詳しく解説します。

Pandasとは:ライブラリの概要と主な機能

Pandasは、データ分析や機械学習のためのPythonライブラリです。NumPyとともに使われることが多く、NumPyの配列を基にしてデータフレームという表形式のデータ構造を提供しています。

Pandasの主な機能は以下のとおりです。

  • データフレームとシリーズの作成・操作
  • データの結合・変換・クリーニング
  • データの集計・統計処理
  • データの可視化

データフレームとシリーズ:Pandasの基本的なデータ構造

Pandasの基本的なデータ構造は、データフレームとシリーズです。

データフレームは、行と列からなる2次元のデータを扱うための構造です。Excelのような表形式のデータを格納することができます。データフレームは、同じ長さの1次元配列やリストを要素として持つ辞書型のオブジェクトとして作成することができます。

import pandas as pd
data = {'名前': ['太郎', '次郎', '花子', '三郎'],
        '年齢': [20, 25, 18, 30],
        '性別': ['男', '男', '女', '男']}
df = pd.DataFrame(data)
print(df)

上記のコードでは、辞書型のdataをデータフレームに変換しています。データフレームを表示すると、以下のような表形式のデータが表示されます。

  名前  年齢 性別
0  太郎  20  男
1  次郎  25  男
2  花子  18  女
3  三郎  30  男

シリーズは、1次元のデータを扱うための構造です。データフレームの1列や1行をシリーズとして抽出することができます。

import pandas as pd
data = {'名前': ['太郎', '次郎', '花子', '三郎'],
        '年齢': [20, 25, 18, 30],
        '性別': ['男', '男', '女', '男']}
df = pd.DataFrame(data)
age_series = df['年齢']
print(age_series)

上記のコードでは、データフレームdfから’年齢’列を抽出し、シリーズとして表示しています。

0    20
1    25
2    18
3    30
Name: 年齢, dtype: int64

データ操作の基本:データフレームの作成、読み込み、書き出し

データフレームを作成する方法はいくつかあります。辞書型のオブジェクトやCSVファイル、Excelファイルなどからデータを読み込んでデータフレームを作成することができます。

以下の例では、CSVファイルからデータを読み込んでデータフレームを作成しています。

import pandas as pd
df = pd.read_csv('data.csv')
print(df)

データフレームをCSVファイルとして書き出す場合は、to_csv()メソッドを使用します。

import pandas as pd
df.to_csv('output.csv', index=False)

上記のコードでは、データフレームdfをCSVファイルとして書き出しています。index=Falseとすることで、行番号を出力しないようにしています。

データ加工・クリーニング:フィルタリング、並べ替え、欠損値処理など

データフレームの加工やクリーニングは、データのフィルタリングや並べ替え、欠損値の処理などを行うことができます。

以下の例では、’年齢’列が20歳以上のデータのみを抽出しています。

import pandas as pd
data = {'名前': ['太郎', '次郎', '花子', '三郎'],
        '年齢': [20, 25, 18, 30],
        '性別': ['男', '男', '女', '男']}
df = pd.DataFrame(data)
filtered_df = df[df['年齢'] >= 20]
print(filtered_df)

上記のコードでは、データフレームdfの’年齢’列の値が20以上の行のみを抽出しています。

  名前  年齢 性別
0  太郎  20  男
1  次郎  25  男
3  三郎  30  男

欠損値の処理には、dropna()メソッドやfillna()メソッドを使用することができます。

以下の例では、欠損値が含まれる行を削除しています。

import pandas as pd
data = {'名前': ['太郎', '次郎', '花子', '三郎'],
        '年齢': [20, None, 18, 30],
        '性別': ['男', '男', '女', '男']}
df = pd.DataFrame(data)
cleaned_df = df.dropna()
print(cleaned_df)

上記のコードでは、欠損値が含まれる行を削除したデータフレームcleaned_dfを表示しています。

  名前    年齢 性別
0  太郎  20.0  男
2  花子  18.0  女
3  三郎  30.0  男

集計・統計処理:グループ化、集約関数、統計量の算出

データフレームの集計や統計処理は、グループ化や集約関数、統計量の算出などを行うことができます。

以下の例では、’性別’列でグループ化し、’年齢’列の平均値を算出しています。

import pandas as pd
data = {'名前': ['太郎', '次郎', '花子', '三郎'],
        '年齢': [20, 25, 18, 30],
        '性別': ['男', '男', '女', '男']}
df = pd.DataFrame(data)
grouped_df = df.groupby('性別')['年齢'].mean()
print(grouped_df)

上記のコードでは、’性別’列でグループ化した後、’年齢’列の平均値を算出しています。

性別
女    18.0
男    25.0
Name: 年齢, dtype: float64

統計量の算出には、describe()メソッドを使用することができます。

import pandas as pd
data = {'名前': ['太郎', '次郎', '花子', '三郎'],
        '年齢': [20, 25, 18, 30],
        '性別': ['男', '男', '女', '男']}
df = pd.DataFrame(data)
stats = df.describe()
print(stats)

上記のコードでは、データフレームdfの統計量を算出しています。

             年齢
count   4.000000
mean   23.250000
std     5.057997
min    18.000000
25%    19.500000
50%    22.500000
75%    26.250000
max    30.000000

まとめ

Pandasは、Pythonでデータ処理を行うための強力なライブラリです。データフレームとシリーズという基本的なデータ構造を使って、データの作成、読み込み、加工、クリーニング、集計などの操作を簡単に行うことができます。

この記事では、Pandasの基本的な仕組みと機能について解説しました。Pandasを使えば、データ処理の基本を習得することができますので、ぜひ活用してみてください。