---
title: DS_Pandas
tags: 
author: [kokuren](https://convert.docswell.com/user/kokuren333)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/PJRMW969E9.jpg?width=480
description: DS_Pandas by kokuren
published: November 28, 24
canonical: https://convert.docswell.com/s/kokuren333/522Q44-2024-11-28-201928
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/PJRMW969E9.jpg)

Pandas
DataFrame
Selection
Filtering
Series
Aggregation
loc
Sorting
iloc
Vectorized Operations
fillna
Index
Missing Data Handling
MultiIndex
dropna
GroupBy
Indexing
Merge/Join
Split-Apply-Combine
Aggregation Functions
GroupBy Object
Custom Aggregations
Concatenation
Reshape
SQL-like Joins
Pivot Table
Stack/Unstack
Pandas
定義や意味
Pandasは、データ操作や解析のためのPythonライブラリであり、特にデータフレー
ムと呼ばれるデータ構造を提供することで、大量のデータを効率的に処理することが
可能
主に二つのデータ構造を提供する: Series （1次元のラベル付き配列）
と DataFrame （2次元のラベル付きデータ構造）
Pandasは、データのクリーニング、変形、データの解析や操作を容易にするための
多くの機能を提供
例えば、データフレームにおける列の選択やフィルタリング、欠損値の取り扱い、グ
ループ化や集計など
嚙み砕いた説明
Pandasは、Pythonでデータを扱うときの便利なツールで、特に表形式のデータを操
作するのに適している
例えば、エクセルのスプレッドシートのようなデータをPythonで取り扱いたい場合に
役立つ
データを読み込んだり、必要なデータだけを抽出したり、集計したりするのがとても
簡単にできる
データ解析を行う際の前処理や、データのクリーニングを助ける
実際の応用例
Pandasは、データサイエンス、機械学習、ビジネスインテリジェンスなど、多くの
分野でデータ操作に使用される
例えば、CSVファイルからデータを読み込み、特定の条件に基づいてデータをフィル
タリングしたり、グループ化して平均値を計算したりする


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L73PRWNZE5.jpg)

以下にCSVファイルを読み込み、特定の列でフィルタリングし、グループ化して平均を計算
するコード例を示す。
import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv(&#039;data.csv&#039;)
# &#039;age&#039;列が30以上のデータをフィルタリング
filtered_df = df[df[&#039;age&#039;] &gt;= 30]
# &#039;department&#039;列でグループ化し、&#039;salary&#039;の平均を計算
mean_salary_by_department = filtered_df.groupby(&#039;department&#039;)[&#039;salary&#039;].mean()
# 結果を表示
print(mean_salary_by_department)
このコードスニペットでは、Pandasを用いて以下を行っている：
1. CSVファイルからデータを読み込む
2. 年齢が30以上の行をフィルタリング
3. 部署ごとにグループ化し、給与の平均を計算する
4. 結果を出力する
DataFrame
定義や意味
DataFrameとは、行と列で構成される二次元のデータ構造を指す。特にPandasライ
ブラリでよく用いられるデータ構造であり、データ解析やデータ操作において非常に
便利なツール。
DataFrameは、異なるデータ型を持つ列を含むことができる。つまり、数値、文字
列、ブール値などを同時に扱うことが可能。
行と列のラベルを持ち、これによりデータの操作やアクセスが容易になる。


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VJP26K9VJ8.jpg)

嚙み砕いた説明
DataFrameは、Excelのスプレッドシートのようなもの。行と列があり、それぞれに
データを入れることができる。
各列は異なるデータ型を持つことができ、例えば、ひとつの列には名前（文字列）、
別の列には年齢（整数）、さらに別の列には評価（浮動小数点数）を格納することが
できる。
行と列にラベルがあるため、データに対して柔軟な操作が可能。例えば、特定の列だ
けを取り出したり、条件に合う行だけを抽出したりすることが簡単にできる。
実際の応用例
データ解析や機械学習の前処理として、CSVファイルなどのデータセットを読み込
み、不要なデータを削除したり、欠損値を補完したりする際に使われる。
ゲームのスコアボードやプレイヤーのステータスを管理する際にも利用可能。データ
のフィルタリングや集計を簡単に行うことができる。
以下にPandasを用いたDataFrameの基本的な使い方を示す。


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4EQM5YX2JP.jpg)

import pandas as pd
# サンプルデータを用いてDataFrameを作成
data = {
&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;],
&#039;Age&#039;: [25, 30, 35],
&#039;Score&#039;: [85.5, 92.0, 88.0]
}
df = pd.DataFrame(data)
# DataFrameの表示
print(df)
# 特定の列を選択
ages = df[&#039;Age&#039;]
print(ages)
# フィルタリング条件を使ってデータを抽出
high_scores = df[df[&#039;Score&#039;] &gt; 90]
print(high_scores)
# 新しい列を追加
df[&#039;Passed&#039;] = df[&#039;Score&#039;] &gt; 90
print(df)
このコードは、Pandasライブラリを用いてDataFrameを作成し、データの選択、フ
ィルタリング、新しい列の追加を行う例を示す。
df = pd.DataFrame(data) でDataFrameを作成し、 df[&#039;Age&#039;] で特定の列を選択でき
る。
df[df[&#039;Score&#039;] &gt; 90] のように条件に基づいてデータをフィルタリングすることが可
能。
Series
定義や意味
Pandasにおける Series は、一次元のラベル付き配列データ構造。データとそのデー
タに対応するラベル（インデックス）を持つ。


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LE13KYVXJG.jpg)

Series は、データとそのインデックスを保持するためのデータ構造で、デフォルト
では整数型のインデックスが自動的に割り当てられる。
数式的には、 Series は関数f (i)として表現可能で、ここでiはインデックスであり、
f (i)は対応するデータ要素。
例えば、S = {(i, si ) ∣ i ∈ I}の形で、I はインデックス集合、si はデータ要素。
​
​
嚙み砕いた説明
Pandasの Series は、Excelの列のようなもの。データが縦に並んでおり、それぞれに
名前（ラベル）が付いている。
実際のデータはリストや配列のように扱え、ラベルを使ってデータを参照できるた
め、人間にとって理解しやすい。
例えば、 Series は「名前を持ったリスト」と考えることができ、リストと同じよう
に要素をアクセスできるが、ラベルを用いることでより直感的にアクセス可能。
実際の応用例
Series はデータ分析の基礎ツールとして用いられる。例えば、CSVファイルからデ
ータを読み込み、特定の列を Series として扱うことで、データの集計や分析が容易
になる。
ゲーム開発においても、ゲーム内の統計データやプレイヤーのスコアなどを管理する
のに Series が役立つ。


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJ5RGM5D74.jpg)

import pandas as pd
# データとインデックスを用いてSeriesを作成
data = [100, 200, 300]
index = [&#039;Player1&#039;, &#039;Player2&#039;, &#039;Player3&#039;]
scores = pd.Series(data, index=index)
# Seriesの表示
print(scores)
# 出力:
# Player1
100
# Player2
200
# Player3
300
# dtype: int64
# 特定のインデックスの値にアクセス
player1_score = scores[&#039;Player1&#039;]
print(f&quot;Player1&#039;s score: {player1_score}&quot;)
# 出力:
# Player1&#039;s score: 100
# 条件を満たす要素をフィルタリング
high_scores = scores[scores &gt; 150]
print(high_scores)
# 出力:
# Player2
200
# Player3
300
# dtype: int64
このコードスニペットでは、 Series を使ってプレイヤーのスコアを管理し、特定の
条件に基づいてデータを操作する例を示している。
Index
定義や意味
インデックス（Index）とは、データ構造における特定の要素を効率的にアクセスす
るための手段を指す。特にデータベースやデータフレームで用いられる。
Pandasにおけるインデックスとは、 DataFrame や Series オブジェクトにおける行ラ
ベルや列ラベルのこと。インデックスはデータをアクセス、操作、操作結果を保持す


# Page. 7

![Page Image](https://bcdn.docswell.com/page/V7P26KXX78.jpg)

るのに役立つ。
一般的に、インデックスは整数値やラベル（文字列）であり、データの一部として明
示的または暗黙的に定義される。
形式的には、インデックスは次のように数式で表される：
Index = {i1 , i2 , … , in }
​
​
​
ここで、ik はインデックスの各要素を表す。
​
嚙み砕いた説明
インデックスは、データの目次のようなもの。データの最初から順番に探すのではな
く、インデックスを使うことで直接的に特定のデータ要素にアクセスできる。
例えば、本の目次を考えるとわかりやすい。目次があれば特定の内容をすぐに見つけ
ることができるように、データのインデックスも同じ役割を果たす。
Pandasでは、行や列に名前をつけることで、データを簡単に操作したり、特定の行
や列を迅速に見つけることができる。これは特にデータ解析の際に役立つ。
実際の応用例
Pandasにおけるインデックスは、データのフィルタリング、選択、および操作に広
く使用される。
以下は、Pandasでインデックスを使用する具体例：


# Page. 8

![Page Image](https://bcdn.docswell.com/page/5EGY3LXYEL.jpg)

import pandas as pd
# データフレームを作成
data = {&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;],
&#039;Age&#039;: [25, 30, 35],
&#039;Country&#039;: [&#039;USA&#039;, &#039;UK&#039;, &#039;Canada&#039;]}
df = pd.DataFrame(data)
# インデックスを設定
df.set_index(&#039;Name&#039;, inplace=True)
# 特定のインデックスを持つ行を取得
alice_data = df.loc[&#039;Alice&#039;]
# &#039;Alice&#039;のデータを取得
print(alice_data)
# 出力
# Age
25
# Country
USA
# Name: Alice, dtype: object
この例では、 Name 列をインデックスとして設定し、特定の名前（この場合は&#039;Alice&#039;）
に対応するデータを迅速に取得している。
インデックスを利用することにより、効率的にデータを操作できるため、大規模デー
タセットに対するクエリ処理が高速化される。
GroupBy
定義や意味
GroupBy は、データセットを特定の列に基づいてグループ化し、各グループに対して
集約操作を適用する操作
例えば、データテーブルにおいて、特定のカテゴリに基づいてデータをグループ化
し、平均値や合計を計算する
Pandasでは、 DataFrame メソッドの一つとして提供され、 groupby メソッドを用い
て利用される
一般的に、以下のように操作される
ParseError: KaTeX parse error: Expected &#039;EOF&#039;, got &#039;_&#039; at position 25: …
groupby(&#039;column_̲name&#039;).aggregat…


# Page. 9

![Page Image](https://bcdn.docswell.com/page/K74V9W2MJ1.jpg)

ここで ParseError: KaTeX parse error: Expected &#039;EOF&#039;, got &#039;_&#039; at position 16:
\text{aggregate_̲function} は、 sum , mean , count など
嚙み砕いた説明
GroupBy を使うと、データを特定のキー（カテゴリ）でまとめて、そのグループごと
に計算を行うことができる
例えば、売上データが月ごとに記録されている場合、月ごとの売上合計を得るために
GroupBy を使う
データを分類してまとめることで、全体のパターンや傾向を把握しやすくなる
実際の応用例
データ分析において、 GroupBy は非常に頻繁に使用される
例えば、Pandasを使用して、以下のようにデータをグループ化して集計することが
できる
import pandas as pd
# サンプルデータの作成
data = {
&#039;Category&#039;: [&#039;A&#039;, &#039;B&#039;, &#039;A&#039;, &#039;B&#039;, &#039;C&#039;, &#039;A&#039;],
&#039;Value&#039;: [10, 20, 30, 40, 50, 60]
}
# DataFrameの作成
df = pd.DataFrame(data)
# &#039;Category&#039; 列に基づいてグループ化し、&#039;Value&#039; 列の合計を計算
grouped = df.groupby(&#039;Category&#039;)[&#039;Value&#039;].sum()
print(grouped)
このコードは、カテゴリごとに Value の合計を計算する
結果として、 Category が &#039;A&#039;, &#039;B&#039;, &#039;C&#039; それぞれについての合計値が出力される


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4EZKGLVXE3.jpg)

Merge/Join
定義や意味
データのマージ（Merge）や結合（Join）は、プログラミングやデータベースの操作
において、異なるデータセットを共通のキーまたは条件に基づいて統合する操作を指
す
結合には主に内結合（Inner Join）、左外部結合（Left Outer Join）、右外部結合
（Right Outer Join）、完全外部結合（Full Outer Join）がある
内結合では、両方のデータセットに存在するキーに基づいてデータが統合される
Pandasを用いた場合、 merge 関数や join メソッドを使用してデータフレームを結合
することができる
嚙み砕いた説明
マージやジョインは、ExcelでいうVLOOKUPに似た操作で、異なる表にある関連する
データを結びつける作業
例えば、顧客情報が入った表と、その顧客が購入した商品の履歴が入った別の表があ
る場合に、顧客IDをキーとしてこれらを結合し、顧客の詳細情報と購入履歴を一つの
表にまとめることができる
実際の応用例
データ分析におけるデータの統合や、ゲームにおけるデータ管理などで使用されてい
る
Pandasを使用したデータのマージの例を以下に示す


# Page. 11

![Page Image](https://bcdn.docswell.com/page/9J2DY9GZJR.jpg)

import pandas as pd
# 顧客情報のデータフレーム
customers = pd.DataFrame({
&#039;customer_id&#039;: [1, 2, 3],
&#039;name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;]
})
# 購入履歴のデータフレーム
orders = pd.DataFrame({
&#039;order_id&#039;: [101, 102, 103],
&#039;customer_id&#039;: [1, 2, 1],
&#039;product&#039;: [&#039;Book&#039;, &#039;Pen&#039;, &#039;Pencil&#039;]
})
# 顧客情報と購入履歴を顧客IDをキーとして内結合
merged_data = pd.merge(customers, orders, on=&#039;customer_id&#039;, how=&#039;inner&#039;)
print(merged_data)
このコードスニペットでは、 customers データフレームと orders データフレーム
を customer_id をキーとして内結合している。結果として、顧客名とその購入した商品の情
報を一つのデータフレームにまとめている。
Reshape
定義や意味
Reshapeとは、データの形状を変更する操作を指す。特に、行列やテンソルを異なる
次元に変形する際に用いることが多い。
数学的には、ある行列 A のサイズが m × n の場合、Reshape操作によってその要素
を失うことなく、異なる形状 p × q に変換する。ただし、元の行列と新しい行列の総
要素数 (m × n と p × q ) は等しくなければならない。
例えば、行列 A が 2 × 3 の場合、それを 3 × 2 にReshapeすることが可能である。
嚙み砕いた説明
Reshapeは、データの配置を変える操作であり、例えば表形式のデータをリスト形式
に変えたり、その逆を行ったりする。


# Page. 12

![Page Image](https://bcdn.docswell.com/page/VJN8GYMV78.jpg)

Pandasライブラリでは、データフレームの形状を変えるための様々なメソッドが提
供されており、特に pivot や melt 、 stack 、 unstack などがある。
これにより、データ分析や処理の際に、データを適切な形で扱うことが可能になる。
実際の応用例
Reshapeはデータ分析の前処理で頻繁に使用され、特にデータの視覚化や機械学習モ
デルへの入力データの整形時に必須となる。
Pandasを用いた具体例を以下に示す。
import pandas as pd
import numpy as np
# データフレームの作成
data = {
&#039;Year&#039;: [2020, 2020, 2021, 2021],
&#039;City&#039;: [&#039;New York&#039;, &#039;Los Angeles&#039;, &#039;New York&#039;, &#039;Los Angeles&#039;],
&#039;Population&#039;: [8000000, 4000000, 8100000, 4100000]
}
df = pd.DataFrame(data)
# データフレームをピボット（Reshape）する
pivot_df = df.pivot(index=&#039;Year&#039;, columns=&#039;City&#039;, values=&#039;Population&#039;)
print(&quot;Original DataFrame:&quot;)
print(df)
print(&quot;\nPivoted DataFrame:&quot;)
print(pivot_df)
上記のコードでは、 pivot メソッドを用いて、年をインデックス、都市を列として人
口を表示するデータフレームを作成している。
これにより、都市ごとの年次人口を簡単に比較できるビューを提供している。


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GE8RNDK4JD.jpg)

Selection
定義や意味
Selection（選択）は、データセットやデータフレーム内の特定の要素やサブセットを
選び出す操作のこと
プログラミングやデータ処理の文脈では、条件に基づいてデータのフィルタリングや
特定の行・列の選択を行う
数式で表現すると、データ集合 D から条件 C に合致する要素の集合 S を選ぶ操作
は次のようになる：
S = {x ∈ D ∣ C(x)}
嚙み砕いた説明
Selectionとは、データの中から必要な部分だけを取り出すこと
例えば、表形式のデータから特定の列を選んだり、条件に合う行だけを取り出したり
する操作
「選ぶ」という名前の通り、どのデータが欲しいかを選択することに関連する
実際の応用例
Pandasライブラリを用いたデータフレームのフィルタリングや列選択
例えば、特定の条件に合うデータのみを抽出することで、分析や可視化の精度を高め
ることができる
以下にPandasを用いたSelectionの具体例を示す：


# Page. 14

![Page Image](https://bcdn.docswell.com/page/4JM24YVNJW.jpg)

import pandas as pd
# データフレームの作成
data = {
&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;, &#039;David&#039;],
&#039;Age&#039;: [24, 27, 22, 32],
&#039;City&#039;: [&#039;New York&#039;, &#039;Los Angeles&#039;, &#039;Chicago&#039;, &#039;Houston&#039;]
}
df = pd.DataFrame(data)
# 特定の列を選択
selected_columns = df[[&#039;Name&#039;, &#039;Age&#039;]]
print(selected_columns)
# コメント：NameとAgeの列のみを選択して新しいデータフレームを作成
# 特定の条件に基づいて行をフィルタリング
filtered_rows = df[df[&#039;Age&#039;] &gt; 25]
print(filtered_rows)
# コメント：Ageが25より大きい行のみを選択して新しいデータフレームを作成
このコードスニペットでは、Pandasを使用してデータフレームから特定の列を選択し、かつ
年齢が25歳以上の行をフィルタリングしている。これはSelectionの基本的な使い方の一例で
ある。
Filtering
定義や意味
Filteringとは、データセットやシーケンスの中から特定の条件に合致する要素を選び
出す操作のことを指す。プログラミングやデータ処理において、フィルタリングはデ
ータの中から必要な情報を抽出するための基本的な手法である。
数式的には、集合 S の要素 x に対し、条件 P (x) を満たす要素の集合を SP =
{x ∈ S ∣ P (x)} として表現できる。
​
嚙み砕いた説明
Filteringは、データの「ふるい分け」を行う操作のこと。例えば、リストの中から偶
数だけを取り出す、データベースから特定のカテゴリーに属するデータだけを選抜す
る、といった処理がこれにあたる。


# Page. 15

![Page Image](https://bcdn.docswell.com/page/PEXVPQDZ7X.jpg)

現実の例で言うと、スプレッドシートで特定の条件を満たす行だけを表示するフィル
ター機能に似ている。
実際の応用例
Pandasを用いたデータフレームのフィルタリングは、データ分析で頻繁に使用され
る。例えば、特定の条件を満たす行を選択して新しいデータフレームを作成すること
で、効率的にデータを分析することができる。
import pandas as pd
# サンプルデータフレームを作成
data = {
&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;, &#039;David&#039;],
&#039;Age&#039;: [24, 27, 22, 32],
&#039;City&#039;: [&#039;New York&#039;, &#039;Los Angeles&#039;, &#039;New York&#039;, &#039;Chicago&#039;]
}
df = pd.DataFrame(data)
# &quot;City&quot;が&quot;New York&quot;の行をフィルタリング
filtered_df = df[df[&#039;City&#039;] == &#039;New York&#039;]
print(filtered_df)
上記のコードでは、Pandasを用いてデータフレーム df から、&quot;City&quot;カラムが &quot;New
York&quot; である行だけを抽出し、新たなデータフレーム filtered_df を生成している。
このようなフィルタリングは、特定の条件に合致するデータを簡単に選び出し、さら
なる分析や処理を行うために役立つ。
Aggregation
定義や意味
Aggregation（集約）とは、データの集合から特定の基準や条件に基づいて要約統計
量を算出するプロセス
データ分析やデータ処理において、複数のデータポイントを1つの要約値にまとめる
ことが含まれる


# Page. 16

![Page Image](https://bcdn.docswell.com/page/87DLYKYWEG.jpg)

一般的な集約関数には、合計（sum）、平均（mean）、中央値（median）、最大値
（max）、最小値（min）などがある
数式による具体例として、データセット X = {x1 , x2 , … , xn } に対する平均は次のように
​
​
​
定義される:
n
1
mean(X) = ∑ xi
n
​
​
​
i=1
嚙み砕いた説明
Aggregationは、たくさんのデータからざっくりとした傾向を掴むための方法
例えば、テストの点数がたくさんあった場合、その平均点を出すことで全体の傾向を
理解することができる
データをグループごとに分け、そのグループの中での代表的な値を計算することも含
まれる
実際の応用例
Aggregationはデータ分析における基礎的な技術で、特にデータベースやデータフレ
ーム操作を行う際に広く使われる
Pandasライブラリを用いると、データフレームに対して簡単に集約操作を行うこと
ができる
以下はPandasを用いた具体例:
import pandas as pd
# サンプルデータフレームの作成
data = {
&#039;Category&#039;: [&#039;A&#039;, &#039;A&#039;, &#039;B&#039;, &#039;B&#039;, &#039;C&#039;],
&#039;Value&#039;: [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)
# カテゴリごとに値を集約して平均を計算
grouped = df.groupby(&#039;Category&#039;).agg({&#039;Value&#039;: &#039;mean&#039;})
print(grouped)


# Page. 17

![Page Image](https://bcdn.docswell.com/page/57GY3L3Y7L.jpg)

# 出力結果
Value
Category
A
15.0
B
35.0
C
50.0
このコードスニペットでは、データフレーム df 内の Category 列を基準に Value
列の平均を計算している
groupby メソッドを使用してデータをグループ化し、 agg メソッドを使って集約関
数を適用している
Sorting
定義や意味
ソート（Sorting）とは、特定の順序に従ってデータを並べ替える操作のことを指す。
一般的な順序としては、数値の場合は昇順または降順、文字列の場合はアルファベッ
ト順が挙げられる。
ソートアルゴリズムは多種多様で、代表的なものにバブルソート、マージソート、ク
イックソートなどがある。これらのアルゴリズムはそれぞれ計算量やメモリ使用量が
異なる。
ソートの計算量は主にデータの数 n に依存し、時間計算量としては O(n2 ) や
O(n log n) などがある。
嚙み砕いた説明
ソートはデータを決められた順序で並べ替えること。例えば、名簿を50音順に並べ替
えることや、テストの点数を高い順に並べ替えることが該当する。
具体的な例として、数値のリスト [3, 1, 4, 1, 5] を昇順にソートすると
[1, 1, 3, 4, 5] になる。
実際の応用例
ソートはデータベースクエリや、ユーザーインターフェースにおけるリスト表示の際
に広く使われる。例えば、ECサイトで商品を価格順に並べ替える機能など。
Pandasを用いたデータフレームのソートの例を以下に示す。


# Page. 18

![Page Image](https://bcdn.docswell.com/page/4EQM5Y56JP.jpg)

import pandas as pd
# データフレームの作成
data = {
&#039;名前&#039;: [&#039;田中&#039;, &#039;鈴木&#039;, &#039;佐藤&#039;],
&#039;年齢&#039;: [28, 22, 35],
&#039;得点&#039;: [85, 90, 78]
}
df = pd.DataFrame(data)
# &#039;年齢&#039;で昇順にソート
sorted_df = df.sort_values(by=&#039;年齢&#039;)
print(sorted_df)
# 出力
#
名前
年齢
# 1
鈴木
22
90
# 0
田中
28
85
# 2
佐藤
35
78
得点
上記の例では、Pandasの sort_values メソッドを使用して、データフレームを指定し
た列（ 年齢 ）に基づいて昇順に並べ替えている。
Vectorized Operations
定義や意味
ベクトル化された操作（Vectorized Operations）とは、データ構造（通常は配列やデ
ータフレーム）の要素に対して一括で演算を適用する手法を指す
この手法は、ループを使わずにデータ全体に対して操作を行うため、計算が高速化さ
れ、コードが簡潔になる
数式的には、ベクトル化された操作は配列 A と B に対して、要素ごとの演算 C =
A + B のように定義される
嚙み砕いた説明
ベクトル化された操作は、データセット全体に対して一気に計算処理を行うことで、
高速に処理を行う手法


# Page. 19

![Page Image](https://bcdn.docswell.com/page/KJ4V9W9ME1.jpg)

例えば、100万個の数値が入ったリストに対して、それぞれ2を足したいときに、ルー
プを使う代わりにベクトル化された操作を使用すると、一度に計算が行われる
これにより、特に大量のデータを扱う際のパフォーマンスが大幅に向上する
実際の応用例
Pandasを用いたDataFrame操作において、ベクトル化された操作は多用される
各列に対して一括で操作を行ったり、条件を満たす行を一度に抽出したりする際に便
利
以下に、Pandasを用いたベクトル化された操作の具体例を示す
import pandas as pd
# データフレームの作成
data = {&#039;A&#039;: [1, 2, 3, 4, 5], &#039;B&#039;: [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
# 各列に対してベクトル化された操作を実行
# 列 &#039;A&#039; の各要素に 10 を加算
df[&#039;A&#039;] = df[&#039;A&#039;] + 10
# 列 &#039;B&#039; の各要素を 2 で除算
df[&#039;B&#039;] = df[&#039;B&#039;] / 2
print(df)
この例では、DataFrameの各列に対して一度に操作が行われている。列 &#039;A&#039; の各要素に10を
加算し、列 &#039;B&#039; の各要素を2で除算している。ループを使わずにこのような処理が可能であ
り、これがベクトル化された操作の利点である。
Missing Data Handling
定義や意味
Missing Data Handling（欠損データ処理）は、データセットにおいて欠損しているデ
ータポイントを扱うための方法や技術を指す。これはデータ分析や機械学習において
重要であり、欠損データがあるとモデルの精度や結果に悪影響を及ぼす可能性がある
ため、適切な処理が求められる。


# Page. 20

![Page Image](https://bcdn.docswell.com/page/LE13KYKYJG.jpg)

欠損データの処理には、削除、補完、推定などの方法がある。削除は欠損データを持
つサンプル全体を除去する方法で、補完は欠損しているデータを他のデータから推測
して埋める方法である。
数式で表現すると、あるデータセット D があるとき、欠損値のない部分を Dobs 、欠
損値を Dmiss とし、全体のデータセットを D = Dobs ∪ Dmiss とする。
​
​
​
​
嚙み砕いた説明
データセットの中には、時として値が欠けていることがある。例えば、アンケート調
査で回答者が質問に答えていなかったり、センサーが誤動作してデータを記録し損ね
ることがある。こういった欠損しているデータをどう扱うかがMissing Data Handling
である。
欠損値をそのままにしておくと、分析結果に偏りが出ることがあるため、適切に処理
することが必要。例えば、欠損しているデータを平均値で埋めたり、前後の値から推
測して補完したりすることがある。
実際の応用例
Pandasを用いたデータ分析の際、欠損値を処理するためのメソッドがいくつか用意
されている。 dropna() を使用して欠損値が含まれる行を削除したり、 fillna() を使
って欠損値を特定の値や計算された値で埋めたりすることができる。


# Page. 21

![Page Image](https://bcdn.docswell.com/page/GEWPDGD1J2.jpg)

import pandas as pd
import numpy as np
# サンプルデータフレームの作成
data = {
&#039;A&#039;: [1, 2, np.nan, 4],
&#039;B&#039;: [5, np.nan, np.nan, 8],
&#039;C&#039;: [10, 11, 12, np.nan]
}
df = pd.DataFrame(data)
# 欠損値がある行を削除
df_dropped = df.dropna()
print(&quot;欠損値がある行を削除:\n&quot;, df_dropped)
# 欠損値を0で埋める
df_filled = df.fillna(0)
print(&quot;\n欠損値を0で埋める:\n&quot;, df_filled)
# 列ごとの平均値で欠損値を埋める
df_filled_mean = df.apply(lambda col: col.fillna(col.mean()), axis=0)
print(&quot;\n列ごとの平均値で欠損値を埋める:\n&quot;, df_filled_mean)
上記のコードは、データフレーム内の欠損値を処理する典型的な例。 dropna() を使用
して欠損値を含む行を削除することもできるし、 fillna() によって欠損値を0や平均
値で補完することもできる。これにより、データセットを分析に適した形に整えるこ
とが可能。
MultiIndex
定義や意味
MultiIndexとは、Pandasライブラリにおけるデータ構造で、複数のレベルにわたって
データをインデックス付けするための手法
通常の一次元の単一インデックスに対し、MultiIndexは階層的に複数の次元を持つ
これにより、データフレームやシリーズにおいて複雑なデータ構造を効率的に管理・
操作可能


# Page. 22

![Page Image](https://bcdn.docswell.com/page/47ZKGLGX73.jpg)

嚙み砕いた説明
MultiIndexは、データを階層構造で整理するためのツール
たとえば、企業の売上データが年、四半期、製品カテゴリ別に分かれている場合、そ
れらをそれぞれの階層として扱い、複数の水準でデータを参照できる
各レベルにおけるインデックスを組み合わせることで、特定のデータポイントを簡単
に特定可能
実際の応用例
MultiIndexは、データのグループ化や集約計算において便利
例えば、複数の市の異なる年の気温データを分析する場合に使用可能
以下にPandasでのMultiIndexの使用例を示す：
import pandas as pd
# データを準備
data = {
&#039;City&#039;: [&#039;New York&#039;, &#039;New York&#039;, &#039;Los Angeles&#039;, &#039;Los Angeles&#039;],
&#039;Year&#039;: [2020, 2021, 2020, 2021],
&#039;Temperature&#039;: [30, 32, 35, 36]
}
# DataFrameを作成
df = pd.DataFrame(data)
# MultiIndexを設定
df.set_index([&#039;City&#039;, &#039;Year&#039;], inplace=True)
# データの表示
print(df)
このコードは、 City と Year の2つの列を使ってデータフレームに階層的なインデックスを設
定する例である。これにより、都市と年を基にしたデータのアクセスが容易になる。
MultiIndexを使用することで、クロス集計や階層的なデータ分析が容易になる
より複雑なデータ分析や統計処理においても、効率的にデータを操作可能


# Page. 23

![Page Image](https://bcdn.docswell.com/page/YJ6QYWYPJV.jpg)

Indexing
定義や意味
Indexing（インデクシング）とは、データ構造において特定の要素を迅速にアクセス
するために、要素に対して一意のキーや位置を割り当てるプロセスのこと。これによ
り、データへのアクセスが効率的になり、特に大規模なデータセットでの検索や操作
が高速化される。
数学的に表現すると、配列やリスト A の i 番目の要素を A[i] と表すことができる。
ここで、i はインデックスである。
嚙み砕いた説明
インデクシングは、データを並べて、その位置を指定することでデータにアクセスす
る手法。たとえば、リストや配列の中から特定の値を取り出すときに、その値がどこ
にあるのかを指定するために使う。もし、リストが電話帳だとしたら、インデックス
はページ番号のようなもの。
Pythonでのリストの例: リスト fruits = [&#039;apple&#039;, &#039;banana&#039;, &#039;cherry&#039;] から最初の
要素 &#039;apple&#039; を取り出すには、 fruits[0] と書く。
実際の応用例
Pandasライブラリでは、DataFrameの行や列にアクセスするためにインデクシング
を使用する。Pandasでは、ラベルベース（ loc ）と位置ベース（ iloc ）のインデク
シングがある。


# Page. 24

![Page Image](https://bcdn.docswell.com/page/GJ5RGMGP74.jpg)

import pandas as pd
# サンプルのデータフレームを作成
data = {
&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;],
&#039;Age&#039;: [25, 30, 35],
&#039;City&#039;: [&#039;New York&#039;, &#039;Los Angeles&#039;, &#039;Chicago&#039;]
}
df = pd.DataFrame(data)
# ラベルベースのインデクシング
# 名前が &#039;Alice&#039; の行を取得
alice_row = df.loc[0]
# locはラベルベースなので、ここでは行の名前(ラベル)で指定可能
print(alice_row)
# 位置ベースのインデクシング
# 2番目の行（0から始まるインデックス）を取得
second_row = df.iloc[1]
# ilocは位置ベースなので数値インデックスで指定
print(second_row)
# 特定の列を取得
ages = df[&#039;Age&#039;]
print(ages)
# 複数の列を取得
name_and_city = df[[&#039;Name&#039;, &#039;City&#039;]]
print(name_and_city)
このように、Pandasでのインデクシングを使うことで、データフレーム内の特定の
データを迅速に取得し、操作することが可能になる。ゲームデータの管理や分析など
多くの場面で利用される。
Split-Apply-Combine
定義や意味
Split-Apply-Combineはデータ解析のための一般的な手法であり、データを一度に処理
するのではなく、特定の基準で分割（Split）し、各グループに対して処理を適用
（Apply）し、最後に結果を結合（Combine）する


# Page. 25

![Page Image](https://bcdn.docswell.com/page/9E2DY9YZER.jpg)

この手法は特にデータの集計や変換を行う際に有効であり、PythonのPandasライブ
ラリでよく使われる
数式的には、データ集合D を特定の基準で分割し、それぞれの部分集合Di に関数f を
適用し、結果を結合する操作を次のように表せる：
​
result = ⋃ f (Di )
​
​
i
嚙み砕いた説明
Split-Apply-Combineは、まずデータをいくつかのグループに分ける（Split）ことから
始まる。たとえば、売上データを店舗ごとに分けるような操作
次に、各グループに対して平均値を計算するなどの特定の操作を適用（Apply）する
最後に、適用した結果を一つにまとめて（Combine）全体の結果を得る
これにより、大規模なデータセットに対して複雑な操作を効率的に行えるようになる
実際の応用例
Pandasライブラリを用いたSplit-Apply-Combineの実例として、データフレームのグ
ループ化と集約処理を行う
import pandas as pd
# サンプルデータの作成
data = {
&#039;Store&#039;: [&#039;A&#039;, &#039;A&#039;, &#039;B&#039;, &#039;B&#039;, &#039;C&#039;, &#039;C&#039;],
&#039;Sales&#039;: [100, 150, 200, 250, 300, 350]
}
df = pd.DataFrame(data)
# Split: &#039;Store&#039;列でデータをグループ化
grouped = df.groupby(&#039;Store&#039;)
# Apply: 各グループの平均売上を計算
average_sales = grouped[&#039;Sales&#039;].mean()
# Combine: 結果を表示
print(average_sales)
このコードでは、店舗ごと（&#039;Store&#039;列）にデータを分割し（Split）、各店舗の平均売
上を計算し（Apply）、その結果を表示する（Combine）


# Page. 26

![Page Image](https://bcdn.docswell.com/page/D7Y2G4GN7M.jpg)

Pandasの groupby メソッドを使用することで、簡単にSplit-Apply-Combineの処理が可
能となる
Aggregation Functions
定義や意味
Aggregation Functions（集約関数）は、データのセットを単一の値に要約するための
関数
データ分析において、特徴の要約、データの傾向の把握、統計的分析などに用いられ
る
一般的な集約関数には、合計（sum）、平均（mean）、最大値（max）、最小値
（min）、分散（variance）、標準偏差（standard deviation）などがある
例えば、データセット X = x1 , x2 , … , xn の平均は次の式で表される：
​
​
​
n
1
mean(X) = ∑ xi
n i=1
​
​
​
嚙み砕いた説明
集約関数は、多くのデータを要約して、重要な情報を簡潔に伝える
例えば、クラスのテスト結果があるとき、全員の点数の合計や平均を計算すること
で、クラス全体の成績の傾向を把握できる
合計はデータ全体の量を示し、平均はデータの中心傾向を示す
実際の応用例
Pandasライブラリを用いたデータフレームの集計
データ分析や可視化、レポート生成などで頻繁に使用される
以下に、Pandasを用いた集約関数の例を示す：


# Page. 27

![Page Image](https://bcdn.docswell.com/page/VEN8GYGVJ8.jpg)

import pandas as pd
# サンプルデータを持つデータフレームの作成
data = {
&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;, &#039;David&#039;],
&#039;Score&#039;: [85, 95, 78, 90]
}
df = pd.DataFrame(data)
# 各集約関数を用いた例
# 合計
total_score = df[&#039;Score&#039;].sum()
print(f&quot;Total Score: {total_score}&quot;)
# Total Score: 348
# 平均
average_score = df[&#039;Score&#039;].mean()
print(f&quot;Average Score: {average_score}&quot;)
# Average Score: 87.0
# 最大値
max_score = df[&#039;Score&#039;].max()
print(f&quot;Max Score: {max_score}&quot;)
# Max Score: 95
# 最小値
min_score = df[&#039;Score&#039;].min()
print(f&quot;Min Score: {min_score}&quot;)
# Min Score: 78
# 分散
variance_score = df[&#039;Score&#039;].var()
print(f&quot;Variance of Score: {variance_score}&quot;)
# Variance of Score: 61.583333333333336
# 標準偏差
std_deviation_score = df[&#039;Score&#039;].std()
print(f&quot;Standard Deviation of Score: {std_deviation_score}&quot;)
# Standard Deviation of Sc
このコードスニペットでは、Pandasを用いてデータフレーム内のスコア列に対し
て、合計、平均、最大値、最小値、分散、標準偏差を計算している
各集約関数は、データの異なる側面を理解するのに役立つ情報を提供する


# Page. 28

![Page Image](https://bcdn.docswell.com/page/Y79KWPWV73.jpg)

Concatenation
定義や意味
連結（Concatenation）は、複数の文字列やデータ構造を一つに結合する操作を指
す。特に、文字列の連結や、データフレームの行や列を結合することを含む。
数学的には、文字列 s1 , s2 , … , sn の連結は、新しい文字列 s = s1 s2 … sn と表せ
​
​
​
​
​
​
る。
データフレームの連結では、行方向や列方向に沿って結合する。Pandasで
は、 pd.concat() 関数を用いる。
嚙み砕いた説明
連結とは、2つ以上のものをつなげて一つにすること。
たとえば、文字列 &quot;Hello&quot; と &quot;World&quot; を連結すると &quot;HelloWorld&quot; になる。
データフレームでの連結は、表を縦または横に繋げて一つの大きな表を作ること。
実際の応用例
ゲームやアプリケーションの開発において、ユーザーデータを集約する際に使用され
る。
データ分析で、異なるデータセットを統合して分析する場合に役立つ。
以下はPandasを用いたデータフレームの連結の具体例：


# Page. 29

![Page Image](https://bcdn.docswell.com/page/G78RNDN4ED.jpg)

import pandas as pd
# サンプルデータフレームの作成
df1 = pd.DataFrame({
&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;],
&#039;Age&#039;: [25, 30]
})
df2 = pd.DataFrame({
&#039;Name&#039;: [&#039;Charlie&#039;, &#039;David&#039;],
&#039;Age&#039;: [35, 40]
})
# 行方向に連結
df_concatenated = pd.concat([df1, df2], axis=0)
# 結果の出力
print(df_concatenated)
このコードスニペットでは、 df1 と df2 という2つのデータフレームを行方向に連結
し、 df_concatenated という新しいデータフレームを生成する。結果として、4人分のデータ
を持つデータフレームが出力される。
SQL-like Joins
定義や意味
SQL-like Joinsとは、異なるデータセット間で共通のキーを基にデータを結合する操
作のことを指す。データベースにおけるSQLのJOIN操作に由来し、データ分析やデー
タ処理において広く用いられる。Pandasなどのデータ処理ライブラリでも同様の操
作が可能で、データフレーム同士を結合する際に用いる。
よく用いられる結合の種類には、次のものがある：
INNER JOIN：両方のデータセットに存在する共通のキーに基づいて行を結合
LEFT JOIN (LEFT OUTER JOIN)：左側のデータセットのすべての行と共通の
キーに基づき右側のデータセットの行を結合
RIGHT JOIN (RIGHT OUTER JOIN)：右側のデータセットのすべての行と共通
のキーに基づき左側のデータセットの行を結合


# Page. 30

![Page Image](https://bcdn.docswell.com/page/L7LKPMPVER.jpg)

FULL JOIN (FULL OUTER JOIN)：両方のデータセットのすべての行を結合
し、共通のキーが存在しない場合はNULLを挿入
嚙み砕いた説明
SQL-like Joinsは、異なるテーブルやデータフレームを、共通の情報を基に結びつけ
る方法。例えば、顧客情報のテーブルと注文情報のテーブルがあるときに、顧客IDを
基に両方の情報を一緒に見ることができる。
それぞれのJOINは、どのデータを優先して結合するかの違いを示す。INNER JOINは
共通する部分だけを、LEFT JOINは左のデータを優先、RIGHT JOINは右のデータを
優先、FULL JOINは全てのデータを結合する。
実際の応用例
Pandasを用いたデータフレームの結合において、SQL-like Joinsは非常に便利。特に
データ分析や機械学習において、異なる情報源からのデータを統合し、一つのデータ
セットにまとめる際に用いられる。
以下はPandasを用いたJOINの具体例：


# Page. 31

![Page Image](https://bcdn.docswell.com/page/PERMW9W479.jpg)

import pandas as pd
# 顧客情報のデータフレーム
customers = pd.DataFrame({
&#039;customer_id&#039;: [1, 2, 3],
&#039;name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;]
})
# 注文情報のデータフレーム
orders = pd.DataFrame({
&#039;order_id&#039;: [101, 102, 103],
&#039;customer_id&#039;: [1, 2, 4],
&#039;amount&#039;: [250, 150, 300]
})
# INNER JOINの例
inner_join_df = pd.merge(customers, orders, on=&#039;customer_id&#039;, how=&#039;inner&#039;)
print(&quot;INNER JOIN:&quot;)
print(inner_join_df)
# LEFT JOINの例
left_join_df = pd.merge(customers, orders, on=&#039;customer_id&#039;, how=&#039;left&#039;)
print(&quot;\nLEFT JOIN:&quot;)
print(left_join_df)
# RIGHT JOINの例
right_join_df = pd.merge(customers, orders, on=&#039;customer_id&#039;, how=&#039;right&#039;)
print(&quot;\nRIGHT JOIN:&quot;)
print(right_join_df)
# FULL JOINの例
full_join_df = pd.merge(customers, orders, on=&#039;customer_id&#039;, how=&#039;outer&#039;)
print(&quot;\nFULL JOIN:&quot;)
print(full_join_df)
このコードスニペットは、Pandasを用いて異なるデータフレームをSQL-like Joinsで結合す
る例を示している。それぞれのJOIN操作がどのように異なるかを出力結果で確認できる。


# Page. 32

![Page Image](https://bcdn.docswell.com/page/LJ3PRWPQ75.jpg)

Pivot Table
定義や意味
ピボットテーブルは、データベースやスプレッドシートにおいて、大量のデータを集
約し、要約して表示するためのツール。データの異なる角度からの分析を可能にす
る。
データの行や列を動的に切り替えたり、集計関数を適用したりすることで、データの
トレンドやパターンを視覚化できる。
Pandasライブラリにおいては、 pandas.DataFrame.pivot_table メソッドを用いて実装
される。以下のような形式で使用する：
DataFrame.pivot_table(data, values, index, columns, aggfunc)
data: 対象のDataFrame
values: 集計する対象のカラム
index: 行ラベル
columns: 列ラベル
aggf unc: 集計関数（デフォルトは平均 np.mean ）
嚙み砕いた説明
ピボットテーブルは、データの「集計表」として考えるとわかりやすい。例えば、売
上データがある場合、各月ごとの製品別売上をまとめたり、地域ごとの売上合計を計
算できる。
Excelのピボットテーブル機能と似ており、データを「縦横に並べ替えて」視覚的に
分析する手法を提供する。
データを異なる観点からまとめることで、特定の条件や視点でのデータ分析が容易に
なる。
実際の応用例
実際のビジネスシーンでは、売上データの月次集計、製品ごとの売上分析、地域別の
販売動向分析などに利用される。
以下のコードスニペットは、Pandasでのピボットテーブルの実装例を示す。


# Page. 33

![Page Image](https://bcdn.docswell.com/page/8JDLYKLW7G.jpg)

import pandas as pd
# サンプルデータの作成
data = {
&#039;Date&#039;: [&#039;2023-01-01&#039;, &#039;2023-01-02&#039;, &#039;2023-01-03&#039;, &#039;2023-01-01&#039;, &#039;2023-01-02&#039;, &#039;2023
&#039;Product&#039;: [&#039;A&#039;, &#039;B&#039;, &#039;A&#039;, &#039;B&#039;, &#039;A&#039;, &#039;B&#039;],
&#039;Sales&#039;: [100, 200, 150, 250, 120, 210],
&#039;Region&#039;: [&#039;East&#039;, &#039;East&#039;, &#039;West&#039;, &#039;West&#039;, &#039;East&#039;, &#039;West&#039;]
}
df = pd.DataFrame(data)
# ピボットテーブルの作成
pivot_table = pd.pivot_table(df, values=&#039;Sales&#039;, index=&#039;Date&#039;, columns=&#039;Product&#039;, aggfun
print(pivot_table)
# 出力: 各日の製品ごとの売上合計が表示されます
# ピボットテーブルの説明
# DateごとにProduct &#039;A&#039;と&#039;B&#039;のSalesを集計し、合計を表示する
この例では、 Date を行ラベル、 Product を列ラベルとして、 Sales の合計を集計して
いる。
Stack/Unstack
定義や意味
StackおよびUnstackは、データフレームの形状を変換するためのPandasのメソッ
ド。これらは主にデータの多次元（階層的）インデックスを扱う際に使われる。
Stackメソッドは、データフレームの列をスタックして行に変換し、長い形式（long
format）にする。階層的な列を持つデータフレームを1次元の列に変換する。
Unstackメソッドは、データフレームの行をアンスタックして列に変換し、広い形式
（wide format）にする。階層的な行を持つデータフレームを多次元の列に変換する。
これらの操作は、データの形状を変えることで、異なる分析や計算を可能にする。


# Page. 34

![Page Image](https://bcdn.docswell.com/page/27VD3VD37Q.jpg)

嚙み砕いた説明
Stackは、データフレームの列を縦に並べ替えて、データをより詳細に表示する。例
えば、異なる年やカテゴリに対するデータを、すべての年やカテゴリを一行ずつ見る
ことができる。
Unstackは、縦に並べたデータを横に広げて表示する。例えば、各年の売上データを
横に並べて、年ごとの売上を比較しやすくする。
これらの操作は、データをより理解しやすくし、特定の分析を行うための形状に変換
するのに役立つ。
実際の応用例
StackとUnstackは、ピボットテーブルの作成や多次元データの操作において広く使
われる。
例えば、売上データの年次比較やカテゴリ別の分析を行う際に、Stack/Unstackでデ
ータの形状を変えてから可視化や集計を行う。
以下にPandasを用いた具体例を示す。
import pandas as pd
# データフレームの作成
data = {
&#039;Year&#039;: [2020, 2020, 2021, 2021],
&#039;Category&#039;: [&#039;A&#039;, &#039;B&#039;, &#039;A&#039;, &#039;B&#039;],
&#039;Sales&#039;: [100, 150, 200, 250]
}
df = pd.DataFrame(data)
# インデックスを設定
df.set_index([&#039;Year&#039;, &#039;Category&#039;], inplace=True)
# データをスタック
stacked_df = df.stack()
print(&quot;Stacked DataFrame:\n&quot;, stacked_df)
# データをアンスタック
unstacked_df = stacked_df.unstack()
print(&quot;\nUnstacked DataFrame:\n&quot;, unstacked_df)


# Page. 35

![Page Image](https://bcdn.docswell.com/page/47QM5YM6EP.jpg)

この例では、データフレームをYearとCategoryの階層的なインデックスで設定し、 stack メ
ソッドを使ってデータを縦に変換。続けて unstack メソッドで元の形式に戻す。これによ
り、データの形状を自在に変更し、異なる分析を可能にする方法を示している。
LOC (Lines of Code)
定義や意味
LOC（Lines of Code）とは、ソフトウェアプログラム内のコード行数を指す。これ
は、プログラムの規模を測るための非常に基本的な指標の一つであり、ソフトウェア
開発において一般的に用いられる。LOCは通常、コメントや空行を除いた実際のコー
ド行数を意味するが、特定の基準により異なることもある。
LOCは直接的なソフトウェアの品質や効率を示すものではないが、開発の進捗管理や
比較のために使用されることがある。
嚙み砕いた説明
LOCはプログラムの「長さ」と考えることができる。たとえば、小さなプログラムは
数十行であるかもしれないが、大きなシステムになると数百万行に及ぶこともある。
LOCが多ければ多いほど、プログラムが複雑であるか、または多機能である可能性が
ある。しかし、必ずしもLOCが多いことが優れているわけではない。効率的で読みや
すいコードを書くことは、LOCを減らすことにも繋がる。
実際の応用例
LOCはプロジェクトの進捗を示す指標として使用され、特に大規模プロジェクトで
は、毎月のLOCの増減によって開発の進行具合を測ることができる。
LOCはまた、コードの保守性や複雑性を評価するためにも使用される。たとえば、特
定のモジュールのLOCが異常に多い場合、そのモジュールがリファクタリングの必要
があると判断できるかもしれない。
以下に、PythonとPandasを用いた簡単な例を示す。この例では、Pandasを用いてCSVファ
イル内のコード行数を計算する。


# Page. 36

![Page Image](https://bcdn.docswell.com/page/L713KY3YEG.jpg)

import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv(&#039;code_file.csv&#039;, header=None)
# コメント行や空行を除くためのフィルタリング
# ここでは行が空でない、かつ行の最初が&#039;#&#039;でないものを実際のコード行とする
actual_code_lines = df[(df[0].str.strip() != &#039;&#039;) &amp; (~df[0].str.strip().str.startswith(&#039;#
# 実際のコード行数を取得
loc = len(actual_code_lines)
print(f&quot;Lines of Code (LOC): {loc}&quot;)
上記のコードスニペットでは、CSVファイル内の行をPandas DataFrameとして読み
込み、コメント行や空行を除いた実際のコード行数を計算している。このように、
Pandasを使うことで効率的にデータを操作し、LOCを算出することが可能である。
iloc
定義や意味
iloc はPythonのデータ解析ライブラリであるPandasにおいて、データフレームやシ
リーズの行や列を整数インデックスで指定して取得するためのメソッド
iloc は「integer location」の略で、整数による位置ベースのインデックス指定を意味
する
インデックスの指定は、スライスやリスト、ブール配列を用いることができる
嚙み砕いた説明
iloc は、表のようなデータから特定の行や列を選び出すための方法
Excelで言えば、行番号や列番号を使って特定のセルを選ぶようなもので、 iloc はそ
のための機能をPandasで提供する
例えば、データフレームの3番目の行と2番目の列の値を取得したい場合に使う
実際の応用例
データフレームの特定の範囲を抽出して分析する場合に使用


# Page. 37

![Page Image](https://bcdn.docswell.com/page/4JZKGLKXJ3.jpg)

データ処理や前処理の際に、データの一部を取得し、計算や変換を行う際に便利
import pandas as pd
# サンプルデータフレームを作成
data = {&#039;A&#039;: [1, 2, 3], &#039;B&#039;: [4, 5, 6], &#039;C&#039;: [7, 8, 9]}
df = pd.DataFrame(data)
# ilocを使って2番目の行と3番目の列を取得
value = df.iloc[1, 2]
print(value)
# インデックスは0から始まるので、1行目は2番目の行
# 出力: 8
# ilocを使ってスライスで行と列を取得
subset = df.iloc[0:2, 1:3]
# 0から1行目、1から2列目を取得
print(subset)
# 出力:
#
B
C
# 0
4
7
# 1
5
8
上記の例では、 iloc を使ってデータフレームの指定した行と列を抽出し、表示して
いる
データ分析や機械学習モデルのトレーニングデータを選択する際など、多くの場面で
利用される
fillna
定義や意味
fillna は、データ分析ライブラリであるPandasにおいて、データフレームやシリー
ズの欠損値（NaN）を特定の値で埋めるためのメソッド
欠損値を埋めることで、データの完全性を確保し、データ分析や機械学習モデルのト
レーニング時のエラーを防ぐことができる
一般的な使用法は以下の通り
DataFrame.fillna(value, method, axis, inplace, limit, downcast)
主な引数:
value : 欠損値を埋めるためのスカラー値や辞書、Series、またはDataFrame


# Page. 38

![Page Image](https://bcdn.docswell.com/page/YE6QYWQPEV.jpg)

method : 欠損値の埋め方を指定するための文字列（例: &#039;ffill&#039;, &#039;bfill&#039;）
axis : 操作を行う軸（0または1）
inplace : 元のオブジェクトを変更するかどうかを指定するブール値
limit : 一度に埋める欠損値の最大数
嚙み砕いた説明
fillna は、データの中にある「穴」を埋めるための道具のようなもの
例えば、アンケートの回答の中でいくつかの質問に答えがない場合、その空欄を平均
値や中央値、もしくは他の適切な値で埋めることができる
fillna を使えば、データが途切れることなく一貫して扱えるようになり、分析や計
算がスムーズになる
実際の応用例
データ分析において、NaNを0に置き換えることで、合計や平均値を計算する際に
NaNが影響を与えないようにする
欠損値を前の値で埋めることで、時系列データのギャップを埋める
機械学習の前処理で、モデルが欠損値を扱えない場合に事前に欠損値を処理する


# Page. 39

![Page Image](https://bcdn.docswell.com/page/972DY9DZ7R.jpg)

import pandas as pd
# サンプルデータフレーム
data = {
&#039;A&#039;: [1, 2, None, 4],
&#039;B&#039;: [None, 2, 3, 4],
&#039;C&#039;: [1, None, None, 4]
}
df = pd.DataFrame(data)
# 欠損値を0で埋める
df_filled_0 = df.fillna(0)
print(&quot;欠損値を0で埋めたデータフレーム:&quot;)
print(df_filled_0)
# 前の値で埋める（前方補間）
df_filled_ffill = df.fillna(method=&#039;ffill&#039;)
print(&quot;\n前の値で埋めたデータフレーム（前方補間）:&quot;)
print(df_filled_ffill)
# 列ごとに異なる値で埋める
values = {&#039;A&#039;: 0, &#039;B&#039;: df[&#039;B&#039;].mean(), &#039;C&#039;: df[&#039;C&#039;].median()}
df_filled_custom = df.fillna(value=values)
print(&quot;\n列ごとに異なる値で埋めたデータフレーム:&quot;)
print(df_filled_custom)
上記のコードスニペットでは、Pandasの fillna を使用して、データフレーム内の欠
損値を異なる方法で埋めている
fillna はデータ分析での欠損値処理において非常に有用なメソッド
dropna
定義や意味
dropna は、Pythonのデータ解析ライブラリであるPandasにおいて、DataFrameや
Seriesから欠損値（NaN）を含む行または列を削除するためのメソッド
DataFrameやSeriesから欠損値を除去することで、データの分析や可視化をより正確
に行うことが可能になる
dropna の基本的な構文は以下の通り


# Page. 40

![Page Image](https://bcdn.docswell.com/page/V7N8GY8VE8.jpg)

DataFrame.dropna(axis=0, how=&#039;any&#039;, thresh=None, subset=None, inplace=False)
axis : 0は行を削除、1は列を削除
how : &#039;any&#039;は1つでもNaNがあれば削除、&#039;all&#039;はすべてNaNの場合に削除
thresh : NaN以外の値が指定された数以上ある場合は削除しない
subset : 特定の列のみをチェックして削除を行う
inplace : Trueにすると元のDataFrameに変更を適用
嚙み砕いた説明
dropna は、データセットの中に存在する「欠損値」を取り除くための手段
欠損値があると正確なデータ解析が難しくなるため、分析を行う前にこれらを取り除
く
例えば、アンケートで回答が欠けている場合、その行を削除することにより、分析の
精度を保つことができる
how=&#039;any&#039; を指定すると、たとえ1つのセルでも欠損していればその行/列を丸ごと削
除する
実際の応用例
実際のデータ分析において、欠損データがあると統計の結果が歪むことが多いため、
欠損データを処理する一環として dropna が使用される
例えば、CSVファイルを読み込んでデータフレームを作成した際に、欠損値を削除し
てクリーンなデータを得るためにこのメソッドが役立つ


# Page. 41

![Page Image](https://bcdn.docswell.com/page/LJLKPMKV7R.jpg)

import pandas as pd
# サンプルデータの作成
data = {&#039;Name&#039;: [&#039;Alice&#039;, &#039;Bob&#039;, &#039;Charlie&#039;, None],
&#039;Age&#039;: [24, None, 22, 29],
&#039;City&#039;: [&#039;New York&#039;, &#039;Los Angeles&#039;, None, &#039;Chicago&#039;]}
df = pd.DataFrame(data)
# 欠損値を含む行を削除
df_cleaned = df.dropna()
print(&quot;Original DataFrame:&quot;)
print(df)
print(&quot;\nDataFrame after dropping rows with NaN:&quot;)
print(df_cleaned)
このコードでは、 dropna を使って欠損値を含む行を削除している。出力結果では、欠損値を
含む行が除去されたクリーンなデータフレームが表示される。
GroupBy Object
定義や意味
GroupByオブジェクトは、データを特定のキーに基づいてグループ化し、そのグルー
プごとに集計や変換を行うためのデータ構造
データ分析ライブラリであるPandasにおいて、 groupby メソッドを用いることで生成
される
グループ化されたデータに対し、集計（sum, mean, countなど）、変換
（transform）、フィルタリングなどの操作を行う際に使用される
具体例として、PandasのDataFrameに対して groupby を実行すると、同じキーを持つ
行が一つのグループとしてまとめられる
嚙み砕いた説明
GroupByオブジェクトは、データをカテゴリごとに分けて操作したいときに使う


# Page. 42

![Page Image](https://bcdn.docswell.com/page/47M24Y2N7W.jpg)

例えば、売上データがあるときに、各店舗や各商品の売上の合計・平均を計算したい
場合に便利
データをグループに分けた後、それぞれのグループに対して個別の処理を行うことが
できる
Excelでいうところのピボットテーブルのようなイメージで、データを整理し、分析
しやすくするための道具
実際の応用例
GroupByオブジェクトは、データ分析やレポート作成の際に非常に役立つ
例えば、売上データを店舗別にグループ化し、それぞれの店舗の売上合計を計算する
ことができる
import pandas as pd
# サンプルデータの作成
data = {
&#039;店舗&#039;: [&#039;A&#039;, &#039;B&#039;, &#039;A&#039;, &#039;B&#039;, &#039;C&#039;],
&#039;売上&#039;: [100, 200, 150, 250, 300]
}
df = pd.DataFrame(data)
# 店舗ごとに売上をグループ化し、合計を計算
grouped = df.groupby(&#039;店舗&#039;).sum()
print(grouped)
上記のコードでは、DataFrameを店舗ごとにグループ化し、それぞれの店舗の売上の
合計を計算している
出力は以下のようになる
売上
店舗
A
250
B
450
C
300
このように、GroupByオブジェクトを使うことで、データを効率的に整理し、分析す
ることが可能となる


# Page. 43

![Page Image](https://bcdn.docswell.com/page/PJXVPQVZEX.jpg)

Custom Aggregations
定義や意味
カスタム集約（Custom Aggregations）は、データの集計処理において、標準的な集
計関数（例: sum , mean , count など）ではなく、ユーザーが独自に定義した関数を用
いてデータを集約する手法を指す
Pandasでは、 groupby メソッドとともに agg メソッドや apply メソッドを使用するこ
とで、カスタム集約を実現可能
例えば、データの最大値と最小値の差を集計したい場合、次のようにカスタム関数を
定義して使用することができる
嚙み砕いた説明
データ集計とは、複数のデータポイントを一つの値にまとめる操作のこと。通常は、
平均を取ったり合計を出したりするが、これ以外の独自の方法でまとめたい場合もあ
る
カスタム集約は、「自分だけの集計方法」を作ってデータをまとめる方法である
例えば、「売上データのうち、最大売上と最小売上の差を知りたい」といった具体的
な要件に応じて、集計方法を作成できる
実際の応用例
データ分析において、特定のビジネスニーズに応じた独自の集計を行う際に使用され
る
ゲームデータの解析において、プレイヤーのスコアの特定の指標を集計する場合
以下のPythonコードスニペットは、Pandasを使用してカスタム集約を実装する例を
示す


# Page. 44

![Page Image](https://bcdn.docswell.com/page/8EDLYK3WJG.jpg)

import pandas as pd
# サンプルデータフレームの作成
data = {
&#039;Category&#039;: [&#039;A&#039;, &#039;A&#039;, &#039;B&#039;, &#039;B&#039;, &#039;C&#039;, &#039;C&#039;],
&#039;Value&#039;: [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)
# カスタム集約関数を定義
def range_aggregation(x):
return x.max() - x.min()
# groupbyとaggを使用してカスタム集約を適用
result = df.groupby(&#039;Category&#039;).agg(Range=(&#039;Value&#039;, range_aggregation))
print(result)
このコードは、各カテゴリにおける Value の最大値と最小値の差を計算し、新しいデータフ
レームとして出力する。カスタム集約関数 range_aggregation が、 groupby の後の agg メ
ソッドで使用されている。


