Pandas頻出メソッド一覧・超まとめ【Python】
皆さんご存知の通り、PandasはPythonのデータ解析ライブラリです。
特にデータフレームを扱う際に非常に強力で、Pythonを学ぶ上で欠かせない存在となっています。
以下、Pandasを利用する上で重要なメソッドをまとめました。
目次
Pandasのインストール
Pandasを利用するためには、まずインストールが必要です。
pip install panda
Pandasの基本データ構造
Series
- 一次元のラベル付き配列。
- 異なるデータ型を持つことができます。
import pandas as pd
# Seriesの作成
s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
print(s)
DataFrame
- 二次元のラベル付きデータ構造。
- 異なる型のデータを持つ列を持つことができます。
data = {
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': ['a', 'b', 'c']
}
df = pd.DataFrame(data)
print(df)
データの入出力
データの読み込み
CSVファイルの読み込み
df = pd.read_csv('data.csv')
Excelファイルの読み込み
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
SQLite3データベースからの読み込み
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql_query('SELECT * FROM table_name', conn)
conn.close()
※実務的にはwith文を使うことが多い気がしますが、上記例では最も基本的な書き方を載せました。
JSONファイルの読み込み
df = pd.read_json('data.json')
データの書き込み
CSVファイルに書き込み
df.to_csv('output.csv', index=False)
Excelファイルに書き込み
df.to_excel('output.xlsx', index=False)
SQLite3データベースに書き込み
import sqlite3
conn = sqlite3.connect('database.db')
df.to_sql('table_name', conn, if_exists='append', index=None)
conn.close()
JSONファイルに書き込み
df.to_json('output.json')
データの基本操作
データの確認
先頭の5行を表示
print(df.head())
末尾の5行を表示
print(df.tail())
データの情報を表示
print(df.info())
基本統計量の表示
print(df.describe())
データの選択とフィルタリング
特定の列を選択
column_data = df['column_name']
複数の列を選択
subset = df[['column1', 'column2']]
条件に基づくフィルタリング
filtered_data = df[df['column_name'] > value]
行インデックスを指定して選択
row_data = df.iloc[0] # 0行目を選択
データの追加と削除
※行の追加は便宜上省いています。
新しい列の追加
df['new_column'] = df['existing_column'] * 2
行の削除
df = df.drop(index=[0, 1]) # 行インデックス0と1を削除
列の削除
df = df.drop(columns=['column_name'])
データのソート
行のソート
df_sorted = df.sort_values(by='column_name', ascending=True)
ascending=Trueで昇順、ascending=Falseで降順。
デフォルトは昇順です。
インデックスの設定
インデックスの変更
# 直接変更を加える
df.set_index('column_name', inplace=True)
# 変更が加えられたDataFrameを使う
df = df.set_index('column_name', inplace=False)
※上記例はいずれも同じ結果になります。
inplace=Trueとすると、DataFrameに直接変更が加えられます。(returnなし)
inplace=Falseとすると、DataFrameに直接変更は加えられず、変更が加えられたDataFrameが返されます。
インデックスのリセット
df.reset_index(drop=True, inplace=True)
データの集約とグループ化
グループ化
グループ化と集計
grouped = df.groupby('column_name').sum()
複数の集計関数の適用
agg_data = df.groupby('column_name').agg({'column1': 'sum', 'column2': 'mean'})
ピボットテーブルの作成
pivot_table = df.pivot_table(values='value_column', index='index_column', columns='column_name', aggfunc='mean')
データの結合とマージ
データフレームのマージ
merged_df = pd.merge(df1, df2, on='key_column', how='inner')
データフレームの連結
concatenated_df = pd.concat([df1, df2], axis=0) # 縦に連結
axis=1で横に連結します。
外部結合や内部結合
merged_outer = pd.merge(df1, df2, how='outer', on='key_column') # 外部結合
merged_inner = pd.merge(df1, df2, how='inner', on='key_column') # 内部結合
データの前処理
欠損値の処理
欠損値の確認
print(df.isnull().sum())
欠損値の削除
df = df.dropna()
欠損値の補完
df['column_name'].fillna(value, inplace=True)
データ型の変換
データ型の確認
print(df.dtypes)
データ型の変更
df['column_name'] = df['column_name'].astype('int')
重複データの処理
重複行の削除
df = df.drop_duplicates()
カテゴリカルデータの処理
df['category_column'] = df['category_column'].astype('category')
データの可視化
PandasはMatplotlibと統合されており、簡単にデータの可視化ができます。
基本的なプロット
import matplotlib.pyplot as plt
df['column_name'].plot(kind='hist', bins=20)
plt.title('Histogram of Column Name')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()
複数のプロット
df.plot(x='x_column', y='y_column', kind='scatter')
plt.title('Scatter Plot')
plt.xlabel('X Column')
plt.ylabel('Y Column')
plt.show()
グラフのカスタマイズ
plt.figure(figsize=(10, 6))
df['column_name'].plot(kind='line')
plt.title('Line Plot')
plt.xlabel('Index')
plt.ylabel('Value')
plt.grid()
plt.show()
時系列データの処理
日付のパース
df['date_column'] = pd.to_datetime(df['date_column'])
リサンプリング
df.set_index('date_column', inplace=True)
monthly_mean = df.resample('M').mean() # 月単位での平均
移動平均の計算
df['moving_average'] = df['value_column'].rolling(window=3).mean()
カスタム関数の適用
applyメソッドの使用
df['new_column'] = df['existing_column'].apply(lambda x: x * 2)
mapメソッドの使用
df['new_column'] = df['existing_column'].map(some_function)
高度な機能
スタイルの適用
styled_df = df.style.highlight_max(axis=0) # 最大値をハイライト
styled_df
データの変換
スタックとアンスタック
stacked = df.stack() # 行を列に変換
unstacked = stacked.unstack() # 列を行に戻す
メルト(long formatへの変換)
melted_df = df.melt(id_vars=['id_column'], value_vars=['column1', 'column2'])
各種関数の適用
カスタム関数を使用した列の処理
def custom_function(x):
return x + 10
df['new_column'] = df['existing_column'].apply(custom_function)
データのフィルタリングと条件付き操作
条件付き選択
複数条件でのフィルタリング
filtered_data = df[(df['column1'] > 5) & (df['column2'] == 'some_value')]
条件に基づく新しい列の追加
df['new_column'] = df['column_name'].apply(lambda x: 'High' if x > 10 else 'Low')
データのエクスポート
Excelファイルへのエクスポート
複数のシートにデータを書き込む
with pd.ExcelWriter('output.xlsx') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
df_summary.to_excel(writer, sheet_name='Summary', index=False)
Pickle形式での保存
データフレームをPickleファイルに保存
df.to_pickle('data.pkl')
Feather形式での保存
Feather形式での保存(高速なバイナリ形式)
df.to_feather('data.feather')
高度なデータ分析
時系列解析
季節性の分解
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(df['value_column'], model='additive')
result.plot()
plt.show()
クラスタリング
K-meansクラスタリングの実施
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
df['cluster'] = kmeans.fit_predict(df[['feature1', 'feature2']])
回帰分析
線形回帰モデルの適用
from sklearn.linear_model import LinearRegression
X = df[['feature1', 'feature2']]
y = df['target']
model = LinearRegression()
model.fit(X, y)
predictions = model.predict(X)
データのスタイリング
DataFrameのスタイル設定
条件付き書式の設定
styled_df = df.style.applymap(lambda x: 'background-color: yellow' if x > 10 else '')
styled_df
テーブルの表示形式のカスタマイズ
styled_df.set_table_attributes('style="font-size: 12px;"')
効率的なデータ処理
大規模データの処理
Daskを使用した大規模データの処理
import dask.dataframe as dd
dask_df = dd.read_csv('large_data.csv')
result = dask_df.groupby('column_name').sum().compute()
パフォーマンスの最適化
データ型の最適化
df['int_column'] = df['int_column'].astype('int32') # メモリ使用量を削減
以上です。
追加や訂正があれば適宜更新にて対応いたします。
ディスカッション
コメント一覧
まだ、コメントがありません