データの基本操作
DataFrameはPandasライブラリの中核となるデータ構造です。以下は基本的な操作例です。
import pandas as pd
import numpy as np
# 5行4列の乱数データでDataFrameを作成
df = pd.DataFrame(np.random.rand(5, 4),
columns=['A', 'B', 'C', 'D'])
# データの表示
print(df)
出力例:
A B C D
0 0.345678 0.789012 0.234567 0.890123
1 0.456789 0.123456 0.567890 0.345678
2 0.789012 0.234567 0.890123 0.456789
3 0.123456 0.567890 0.345678 0.789012
4 0.567890 0.890123 0.456789 0.234567
データの前処理
分割、結合、グループ化
スライス操作を使用してデータを分割し、特定範囲のデータ分布を計算できます。結合はその逆の操作で、複数のDataFrameオブジェクトを1つのDataFrameにまとめます。
データ処理と分析では、特定の列に基づいてデータをグループ化し、同じ値を持つ行の他の列に対して合計や平均を計算することがよくあります。これはgroupby()、sum()、mean()などのメソッドを使用して実現できます。
# 10行4列の乱数データでDataFrameを作成
data = pd.DataFrame(np.random.randint(1, 3, (10, 4)),
columns=list('XYZW'))
print('元のデータ:')
print(data)
# データの分割
first_part = data[:5]
second_part = data[5:]
print('最初の5行:')
print(first_part)
print('残りの5行:')
print(second_part)
# データの結合
combined = pd.concat([first_part, second_part])
print('結合後のデータ:')
print(combined)
# グループ化と集計
mean_by_X = data.groupby('X').mean()
print('X列でグループ化した平均値:')
print(mean_by_X)
sum_by_X = data.groupby('X').apply(sum)
print('X列でグループ化した合計値:')
print(sum_by_X)
データの選択とクリーニング
DataFrameからのデータ選択は、3つのレベルから考える必要があります: 行と列、領域、セル。
1. 角括弧[ ]を使用した行列の選択
2. 行と列の名前を使用したラベル位置指定 df.loc[ ]
3. 整数インデックス(絶対位置インデックス)を使用した df.iloc[ ]
データ前処理では、欠損値に対して特別な処理を行う必要があります。
# 5行3列の乱数データでDataFrameを作成
table = pd.DataFrame(np.random.randint(1, 6, (5, 3)),
index=['行1', '行2', '行3', '行4', '行5'],
columns=['列1', '列2', '列3'])
print('元のテーブル:')
print(table)
# 欠損値の設定
table.loc['行1', '列1'] = np.nan
print('欠損値を設定したテーブル:')
print(table)
# 部分データの抽出
subset = table.iloc[1:3, 0:2].values
print('抽出された部分データ:')
print(subset)
# 新しい列の追加
table['列4'] = '追加データ'
print('列を追加したテーブル:')
print(table)
# インデックスの再作成
reindexed_table = table.reindex(['行1', '行2', '行3', '行4', '行5', '行6'])
print('再作成されたインデックス:')
print(reindexed_table)
# 欠損値を持つ行の削除
cleaned_table = reindexed_table.dropna()
print('欠損値を削除したテーブル:')
print(cleaned_table)