Pandasの基本と応用:APIの詳細解説と実践例

環境準備とライブラリインポート

データ分析に必要なPandasとその関連ライブラリをセットアップします。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 表示設定(オプション)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 1000)

主要なデータ構造:SeriesとDataFrame

これらのデータ構造は、データ操作の基盤となります。

Series

# リストから作成
seq_data = pd.Series([5, 10, 15, 20], name='サンプル')

# NumPy配列から作成
rand_seq = pd.Series(np.random.rand(4), index=['a', 'b', 'c', 'd'])

DataFrame

# 辞書リストから作成
emp_info = [
    {'名前': '田中', '年齢': 27, '都市': '東京'},
    {'名前': '佐藤', '年齢': 32, '都市': '大阪'}
]
df_emp = pd.DataFrame(emp_info)

# NumPy配列から作成
np_array = np.array([[1, 2], [3, 4]])
df_num = pd.DataFrame(np_array, columns=['A', 'B'], index=['行1', '行2'])

データの読み込みと書き出し

CSVファイルの読み込みと保存

# CSV読み込み
csv_df = pd.read_csv('sample.csv', encoding='utf-8')

# CSV書き出し
df_emp.to_csv('output.csv', index=False, encoding='utf-8')

データの確認と探索

# 最初の5行表示
print(df_emp.head())

# 基本情報
print(df_emp.info())

# 統計概要
print(df_emp.describe())

データ選択とフィルタリング

列選択

# 単一列選択
name_col = df_emp['名前']

# 複数列選択
basic_cols = df_emp[['名前', '年齢']]

条件による行選択

# 条件でフィルター
filtered_df = df_emp[df_emp['年齢'] > 30]

データクリーニング

欠損値処理

# 欠損値検出
missing_check = df_emp.isnull().sum()

# 欠損値補完
df_clean = df_emp.fillna({'年齢': df_emp['年齢'].mean()})

データ変換と再構成

データ型変換

# 文字列から数値への変換
df_emp['年齢'] = df_emp['年齢'].astype(int)

グループ化と集約

# 集約計算
grouped_df = df_emp.groupby('都市').agg({
    '年齢': ['mean', 'max']
})

時間データの処理

# 日付範囲生成
date_range = pd.date_range(start='2025-01-01', periods=10, freq='D')

# 日付列追加
time_df = pd.DataFrame({'日付': date_range, '売上': np.random.randint(100, 200, size=10)})
time_df['日付'] = pd.to_datetime(time_df['日付'])

可視化

# 棒グラフ
time_df.plot(kind='bar', x='日付', y='売上', title='売上推移')
plt.show()

タグ: Pandas DataFrame Series データ解析 Python

5月19日 01:42 投稿