BOP - The Future of Creative Engineers -


← ホームに戻る

pandasの基礎

pandasは、Pythonでデータ分析を効率的に行うための強力なライブラリです。主に以下のような機能を提供します。

pandasを使うことで、データの読み込み、書き出し、クリーニング、変換、分析などが容易になります。

pandasのインポート

pandasを使うには、まずインポートする必要があります。慣例的に pd というエイリアスをつけてインポートします。

import pandas as pd

よく使うコマンド

pandasでよく使う基本的なコマンドをいくつかご紹介します。

データの作成

Seriesの作成:

s = pd.Series([10, 20, 30, 40, 50])
print(s)

DataFrameの作成 (リストから):

data = [['Alice', 25], ['Bob', 30], ['Charlie', 28]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)

DataFrameの作成 (辞書から):

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 28]}
df = pd.DataFrame(data)
print(df)

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

CSVファイルの読み込み:

df = pd.read_csv('your_data.csv')
print(df.head()) # 先頭の数行を表示

CSVファイルへの書き出し:

df.to_csv('output.csv', index=False) # index=Falseでインデックスを出力しない

Excelファイルの読み込み:

df = pd.read_excel('your_data.xlsx')
print(df.head())

Excelファイルへの書き出し:

df.to_excel('output.xlsx', index=False)

データの確認

先頭の数行を表示:

df.head()

末尾の数行を表示:

df.tail()

DataFrameの概要:

df.info()

数値データの統計量:

df.describe()

列名の一覧:

df.columns

インデックスの一覧:

df.index

DataFrameの形状 (行数, 列数):

df.shape

データの選択

特定の列を選択:

ages = df['Age']
print(ages.head())

複数の列を選択:

subset = df[['Name', 'Age']]
print(subset.head())

行を選択 (インデックス):

first_row = df.loc[0]
print(first_row)

行を選択 (条件):

older_than_25 = df[df['Age'] > 25]
print(older_than_25)

特定の行と列を選択 (loc):

name_of_first_row = df.loc[0, 'Name']
print(name_of_first_row)

特定の行と列を選択 (iloc - 整数インデックス):

first_element = df.iloc[0, 0]
print(first_element)

データの操作

新しい列の追加:

df['City'] = ['Tokyo', 'Osaka', 'Kyoto']
print(df)

列の削除:

df = df.drop('City', axis=1) # axis=1は列を意味する
print(df)

データのフィルタリング:

filtered_df = df[df['Age'] >= 28]
print(filtered_df)

データのソート:

sorted_df = df.sort_values(by='Age')
print(sorted_df)

欠損値の処理:

# 欠損値があるDataFrameを仮定
data_with_na = {'Name': ['Alice', 'Bob', 'Charlie', None],
                'Age': [25, None, 28, 31]}
df_na = pd.DataFrame(data_with_na)
print(df_na)

# 欠損値の確認
print(df_na.isnull())

# 欠損値の削除
df_dropped_na = df_na.dropna()
print(df_dropped_na)

# 欠損値を特定の値で埋める
df_filled_na = df_na.fillna(0)
print(df_filled_na)

# 欠損値を平均値で埋める
mean_age = df_na['Age'].mean()
df_filled_mean = df_na.fillna({'Age': mean_age, 'Name': 'Unknown'})
print(df_filled_mean)

グループ化 (groupby):

data_for_group = {'Department': ['Sales', 'Sales', 'HR', 'HR', 'Sales'],
                    'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
                    'Salary': [5000, 6000, 4500, 5500, 5200]}
df_group = pd.DataFrame(data_for_group)
print(df_group)

grouped = df_group.groupby('Department')
print(grouped.mean())
print(grouped.sum())
print(grouped.size())

使用例

簡単な使用例として、CSVファイルを読み込み、特定の条件でフィルタリングし、結果を別のCSVファイルに保存する流れを示します。

CSVファイルの作成 (例として)

まず、以下のような内容の sample.csv ファイルを作成します。

Name,Age,City
Alice,25,Tokyo
Bob,30,Osaka
Charlie,28,Tokyo
David,35,Kyoto
Eve,22,Osaka

pandasを使った処理

import pandas as pd

# CSVファイルの読み込み
df = pd.read_csv('sample.csv')
print("読み込んだデータ:\n", df)

# 25歳より年上の人をフィルタリング
older_people = df[df['Age'] > 25]
print("\n25歳より年上の人:\n", older_people)

# 東京に住んでいる人をフィルタリング
tokyo_residents = df[df['City'] == 'Tokyo']
print("\n東京に住んでいる人:\n", tokyo_residents)

# フィルタリングされたデータを新しいCSVファイルに保存
older_people.to_csv('older_people.csv', index=False)
tokyo_residents.to_csv('tokyo_residents.csv', index=False)

print("\nフィルタリングされたデータを 'older_people.csv' と 'tokyo_residents.csv' に保存しました。")

この例では、read_csvでデータを読み込み、条件を使って行をフィルタリングし、to_csvで結果を保存しています。 pandasは非常に多機能であり、ここで紹介したのはほんの一部です。しかし、これらの基本的な操作を理解することで、データ分析の第一歩を踏み出すことができるでしょう。