一覧へ

pandasとは — SeriesとDataFrame

pandasの主要なデータ構造であるSeriesとDataFrameを理解し、データを読み込んで操作する基礎を学びます。

入門
|
7
|
検証済み (2026-07)
進捗0/17 (0%)

pandasとは — SeriesとDataFrame

このトピックを終えると

pandasのSeriesとDataFrameが何であるかを説明できるようになり、CSVファイルを読み込んで基本的な操作ができるようになります。


pandasとは何か

pandasは、Pythonで表形式のデータを扱うためのライブラリです。Excelの表計算シートをコードで操作すると考えてください。

python
import pandas as pd
# CSVファイルを読み込む — これだけでOK
df = pd.read_csv("students.csv")
print(df)
text
名前   年齢  点数
0  キムフン    25    85
1  イ・ス    23    92
2  パク・ジン    27    78

pdは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: int64
python
# インデックスでアクセスする
print(scores["イ・ス"]) # 92
# 条件でフィルタリングする
print(scores[scores >= 80])
# キムフン 85
# イ・ス 92
# 演算
print(scores.mean()) # 85.0
print(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["点数"] >= 80
print(df)
# 名前 年齢 点数 合格
# 0 キムフン 25 85 True
# 1 イ・ス 23 92 True
# 2 パク・ジン 27 78 False
# 列を削除する
df = df.drop("合格", axis=1)
# axis=0は行、axis=1は列

なぜpandasを使うのか

作業純粋なPythonpandas
CSVファイルを読み込む10行以上(open、split、ループ)pd.read_csv() 1行
平均を求めるsum()/len()を直接計算df.mean()
条件でフィルタリングfor + ifdf[df["列"] > 値]
ソートsorted() + keydf.sort_values()

コード量が減るだけでなく、pandasは内部的にC/Cythonで最適化されており、純粋なPythonよりも10〜100倍高速です。

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...