pandasとは — SeriesとDataFrame
このトピックを終えると
pandasのSeriesとDataFrameが何であるかを説明できるようになり、CSVファイルを読み込んで基本的な操作ができるようになります。
pandasとは何か
pandasは、Pythonで表形式のデータを扱うためのライブラリです。Excelの表計算シートをコードで操作すると考えてください。
python
import pandas as pd
# CSVファイルを読み込む — これだけでOKdf = pd.read_csv("students.csv")print(df)text
名前 年齢 点数
0 キムフン 25 85
1 イ・ス 23 92
2 パク・ジン 27 78pdはpandasの慣例的な略称です。データ分析コードではほぼ常にこのように書きます。
Series — 1行のデータ
Seriesは、インデックスが付けられた1次元の配列です。DataFrameの1つの列がSeriesです。
python
import pandas as pd
# Seriesを作成するscores = pd.Series([85, 92, 78], index=["キムフン", "イ・ス", "パク・ジン"])print(scores)text
キムフン 85
イ・ス 92
パク・ジン 78
dtype: int64python
# インデックスでアクセスするprint(scores["イ・ス"]) # 92
# 条件でフィルタリングするprint(scores[scores >= 80])# キムフン 85# イ・ス 92
# 演算print(scores.mean()) # 85.0print(scores.max()) # 92リストに似ていますが、名前でアクセスでき、統計メソッドが組み込まれています。
DataFrame — 表全体
DataFrameは、複数のSeriesが集まった2次元の表です。行と列があります。
python
import pandas as pd
# 辞書で作成するdata = { "名前": ["キムフン", "イ・ス", "パク・ジン"], "年齢": [25, 23, 27], "点数": [85, 92, 78]}df = pd.DataFrame(data)print(df)text
名前 年齢 点数
0 キムフン 25 85
1 イ・ス 23 92
2 パク・ジン 27 78基本的な操作
python
# 列の選択print(df["名前"]) # Seriesを返すprint(df[["名前", "点数"]]) # DataFrameを返す
# 行の選択print(df.loc[0]) # 0行目(名前で)print(df.iloc[0]) # 0行目(位置で)
# 条件によるフィルタリングhigh = df[df["点数"] >= 80]print(high)# 名前 年齢 点数# 0 キムフン 25 85# 1 イ・ス 23 92
# 基本的な統計print(df.describe())# 年齢と点数の平均、標準偏差、最小/最大などよく使うメソッド
python
df.head(3) # 最初の3行df.tail(3) # 最後の3行df.shape # (行数、列数) — 例:(3, 3)df.columns # 列名のリストdf.dtypes # 各列のデータ型df.info() # 要約情報(欠損値を含む)df.sort_values("点数", ascending=False) # 点数を降順にソート列の追加と削除
python
# 新しい列を追加するdf["合格"] = df["点数"] >= 80print(df)# 名前 年齢 点数 合格# 0 キムフン 25 85 True# 1 イ・ス 23 92 True# 2 パク・ジン 27 78 False
# 列を削除するdf = df.drop("合格", axis=1)# axis=0は行、axis=1は列なぜpandasを使うのか
| 作業 | 純粋なPython | pandas |
|---|---|---|
| CSVファイルを読み込む | 10行以上(open、split、ループ) | pd.read_csv() 1行 |
| 平均を求める | sum()/len()を直接計算 | df.mean() |
| 条件でフィルタリング | for + if | df[df["列"] > 値] |
| ソート | sorted() + key | df.sort_values() |
コード量が減るだけでなく、pandasは内部的にC/Cythonで最適化されており、純粋なPythonよりも10〜100倍高速です。