Pandasにおけるマルチレベルインデックスとは
マルチレベルインデックス、または階層的インデックスとも呼ばれるものは、Pandasにおいて複数のインデックスを持つデータを整理する方法です。金融データや科学データなど、複数の次元を持つ複雑なデータセットを表現する際に役立ちます。Pandasにおいて、マルチレベルインデックスは、データの異なる側面を表す複数のレベルのインデックスで構成されます。
マルチレベルインデックスを作成する方法
Pandasでマルチレベルインデックスを作成するには、set_index()
関数を使用します。set_index()
関数を使用すると、1つまたは複数の列をインデックスとして使用でき、複数の列を渡すことでマルチレベルインデックスを作成することができます。
python
import pandas as pd
data = {'year': [2019, 2019, 2020, 2020],
'quarter': [1, 2, 1, 2],
'revenue': [100, 200, 150, 250]}
df = pd.DataFrame(data)
df = df.set_index(['year', 'quarter'])
print(df)
revenue
year quarter
2019 1 100
2 200
2020 1 150
2 250
この例では、year
列とquarter
列からなるマルチレベルインデックスを持つDataFrameを作成しています。
マルチレベルインデックスを使用したインデックスの操作
Pandasでマルチレベルインデックスを作成したら、そのインデックスを使用してデータを選択および操作することができます。 loc[]
およびiloc[]
関数を使用して、インデックスレベルに基づいてデータを選択できます。
python
# 2019年、第1四半期のデータを選択する
print(df.loc[(2019, 1)])
# 2020年の全四半期のデータを選択する
print(df.loc[2020])
# すべての年および四半期のデータを選択する
print(df.loc[:])
revenue 100
Name: (2019, 1), dtype: int64
revenue
quarter
1 150
2 250
revenue
year quarter
2019 1 100
2 200
2020 1 150
2 250
また、xs()
関数を使用してインデックスの特定のレベルのデータを選択することもできます。
python
# すべての年の第1四半期のデータを選択する
print(df.xs(1, level='quarter'))
revenue
year
2019 100
2020 150
マルチレベルインデックスを使用したデータの集計
Pandasにおけるマルチレベルインデックスのもう一つの便利な機能は、インデックスの異なるレベルでデータを集計することができることです。groupby()
関数を使用して、インデックスの1つまたは複数のレベルでデータをグループ化し、集計関数を適用することができます。
python
# 各年の総収益を計算する
print(df.groupby(level='year')['revenue'].sum())
# 各四半期の平均収益を計算する
print(df.groupby(level='quarter')['revenue'].mean())
year
2019 300
2020 400
Name: revenue, dtype: int64
quarter
1 125
2 225
Name: revenue, dtype: int64
AlloyDB
Amazon Cognito
Amazon EC2
Amazon ECS
Amazon QuickSight
Amazon RDS
Amazon Redshift
Amazon S3
API
Autonomous Vehicle
AWS
AWS API Gateway
AWS Chalice
AWS Control Tower
AWS IAM
AWS Lambda
AWS VPC
BERT
BigQuery
Causal Inference
ChatGPT
Chrome Extension
CircleCI
Classification
Cloud Functions
Cloud IAM
Cloud Run
Cloud Storage
Clustering
CSS
Data Engineering
Data Modeling
Database
dbt
Decision Tree
Deep Learning
Descriptive Statistics
Differential Equation
Dimensionality Reduction
Discrete Choice Model
Docker
Economics
FastAPI
Firebase
GIS
git
GitHub
GitHub Actions
Google
Google Cloud
Google Search Console
Hugging Face
Hypothesis Testing
Inferential Statistics
Interval Estimation
JavaScript
Jinja
Kedro
Kubernetes
LightGBM
Linux
LLM
Mac
Machine Learning
Macroeconomics
Marketing
Mathematical Model
Meltano
MLflow
MLOps
MySQL
NextJS
NLP
Nodejs
NoSQL
ONNX
OpenAI
Optimization Problem
Optuna
Pandas
Pinecone
PostGIS
PostgreSQL
Probability Distribution
Product
Project
Psychology
Python
PyTorch
QGIS
R
ReactJS
Regression
Rideshare
SEO
Singer
sklearn
Slack
Snowflake
Software Development
SQL
Statistical Model
Statistics
Streamlit
Tabular
Tailwind CSS
TensorFlow
Terraform
Transportation
TypeScript
Urban Planning
Vector Database
Vertex AI
VSCode
XGBoost