次の Python コードの出力はどれでしょうか?
Python コード:
import pandas as pd
d=['2023-01-01','2023-01-01','2023-01-02','2023-01-02']
c=['A', 'B', 'A', 'B']
n=[10, 20, 30, 40]
df = pd.DataFrame({
'date':d,
'v1':c,
'v2':n})
pivot_df = df.pivot(
index='date',
columns='v1',
values='v2')
print(pivot_df)
回答の選択肢:
(A) 2行2列のテーブル
(B) 1行4列のテーブル
(C) 4行1列のテーブル
(D) エラーが発生する
出力例:
v1 A B
date
2023-01-01 10 20
2023-01-02 30 40
正解: (A)
回答の選択肢:
(A) 2行2列のテーブル
(B) 1行4列のテーブル
(C) 4行1列のテーブル
(D) エラーが発生する
このコードは、DateFrameの中から特定の列を取り出し、それらを新たなDataFrameのインデックス、カラム、値に変換(ピボット)しています。
import pandas as pd
d=['2023-01-01','2023-01-01','2023-01-02','2023-01-02']
c=['A', 'B', 'A', 'B']
n=[10, 20, 30, 40]
df = pd.DataFrame({
'date':d,
'v1':c,
'v2':n})
pivot_df = df.pivot(
index='date',
columns='v1',
values='v2')
print(pivot_df)
詳しく説明します。
日付、`’A’`/`’B’`のラベル、そして整数から成る3つのリストを作成し、それらを基にDataFrameを作ります。このDataFrameは、`’date’`、`’v1’`、`’v2’`という3つのカラムを持ちます。
d=['2023-01-01','2023-01-01','2023-01-02','2023-01-02']
c=['A', 'B', 'A', 'B']
n=[10, 20, 30, 40]
df = pd.DataFrame({
'date':d,
'v1':c,
'v2':n})
df
に格納されているデータは次のようになっています。
date v1 v2
0 2023-01-01 A 10
1 2023-01-01 B 20
2 2023-01-02 A 30
3 2023-01-02 B 40
`pivot()`関数を使って、元のDataFrameを新たな形式に変換します。この関数では、`index`に指定した列が新たなDataFrameのインデックスとなり、`columns`に指定した列が新たなDataFrameのカラムとなり、`values`に指定した列がその値となります。具体的には、ここでは日付がインデックスに、`’A’`/`’B’`のラベルがカラムに、そして整数がその値となる新たなDataFrameが作られます。
pivot_df = df.pivot(
index='date',
columns='v1',
values='v2')
作成したピボットテーブル(新たな形式のDataFrame)を表示します。
print(pivot_df)
v1 A B
date
2023-01-01 10 20
2023-01-02 30 40
ピボットは、元の二次元のテーブル形式のデータを、一部のデータを普通の列からインデックスやヘッダー情報に変換することで、データの積み上げや要約がより容易になります。