PythonでCSVの縦横変換を行う方法について説明します。この記事では、Pandasライブラリを使用して、データの形式を変換する方法を学びます。
縦持ちデータと横持ちデータ
テーブルデータには、「横持ち (wide)」と「縦持ち (long)」と呼ばれる2つの形式があります。横持ちデータは、各行が1つのエンティティ(例えば、従業員や商品)を表し、各列がそのエンティティの属性(例えば、名前や価格)を表します。一方、縦持ちデータは、各行が1つの属性値を表し、2つ以上の列がエンティティを識別するためのキーとなります。
縦持ちデータから横持ちデータへの変換
Pandasのpivot
メソッドを使用して、縦持ちデータを横持ちデータに変換することができます。以下に具体的なコードを示します。
import pandas as pd
# 縦持ちデータの作成
data=[
['A','出身地','Tokyo'],
['A','年齢',28],
['A','性別','M'],
['B','出身地','Osaka'],
['B','年齢',32],
['B','性別','F']
]
df_long=pd.DataFrame(data,columns=['name','attribute','value'])
# 縦持ちから横持ちへの変換
df_wide = df_long.pivot(index='name',columns='attribute',values='value')
print(df_wide)
横持ちデータから縦持ちデータへの変換
Pandasのmelt
メソッドを使用して、横持ちデータを縦持ちデータに変換することができます。以下に具体的なコードを示します。
import pandas as pd
# 横持ちデータの作成
data=[
['A','Tokyo',28,'M'],
['B','Osaka',32,'F']
]
df_wide=pd.DataFrame(data,columns=['name','出身地','年齢','性別'])
# 横持ちから縦持ちへの変換
df_long = df_wide.melt(id_vars='name',var_name='項目名',value_name='値')
print(df_long)
これらの方法を使って、PythonでCSVの縦横変換を行うことができます。データ分析を行う際には、データの形式を適切に変換することが重要です。この記事が皆さんのお役に立てれば幸いです。