PythonのPandasのDataFrameを使って行と列の変換を行う方法

プログラミング Python

Paythonにはデータの分析を行うのに利用できるライブラリに「Pandas」があります。

この「Pandas」は非常に多くの機能を持っており強力なライブラリなのですが、返ってやりたいことがぱっと見でわかりにくく面もあります。

今回はsqlite3データベースから取得したデータをPandasのDataFrameを使って行と列(縦横)変換を行って表示する方法について解説します。

Pandasとはプログラミング言語Pythonにおいて、データ解析を支援する機能を提供するライブラリのこと。
スポンサーリンク

PandasのDataFrameを使って行列(縦横)変換を行う

PandasのDataFrameを使って行列(縦横)変換を行うには「T」属性(アトリビュート)を利用します。

使い方は簡単です。

PandasのDataFrameの通常表示

まずは普通にsqlite3のデータをSELECTして表示する方法です。

import sqlite3
import pandas as pd

#SELECTするためにインメモリーデータベースにデータを保存する
conn = sqlite3.connect( ":memory:" )
conn.execute( "CREATE TABLE personal_data( name TEXT, height INTEGER, weight INTEGER, waist INTEGER )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '山田太郎', 175, 120, 130 )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '岩鬼正美', 190, 100, 110 )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '殿馬一人', 165,  70,  75 )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '土井垣将', 185,  90, 105 )" )

#sqlite3のSELECTした結果をPandasのDataFrameに設定する
df = pd.DataFrame(
         conn.execute( "SELECT name, height, weight, waist FROM personal_data" ).fetchall()
        ,columns=['名前', '身長', '体重', 'ウエスト']
    )
print( "n*****通常の表示*****" )
print( df )
conn.close()

PandasのDataFrameにSQLでの実行結果を渡しています。

実行結果は


*****通常の表示*****
     名前   身長   体重  ウエスト
0  山田太郎  175  120   130
1  岩鬼正美  190  100   110
2  殿馬一人  165   70    75
3  土井垣将  185   90   105

のようになります。

PandasのDataFrameの行列(縦横)変換表示

次に「DataFrameのT属性(アトリビュート)」にアクセスして行列(縦横)変換表示を行います。

import sqlite3
import pandas as pd

#SELECTするためにインメモリーデータベースにデータを保存する
conn = sqlite3.connect( ":memory:" )
conn.execute( "CREATE TABLE personal_data( name TEXT, height INTEGER, weight INTEGER, waist INTEGER )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '山田太郎', 175, 120, 130 )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '岩鬼正美', 190, 100, 110 )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '殿馬一人', 165,  70,  75 )" )
conn.execute( "INSERT INTO  personal_data VALUES ( '土井垣将', 185,  90, 105 )" )

#sqlite3のSELECTした結果をPandasのDataFrameに設定する
df = pd.DataFrame(
         conn.execute( "SELECT name, height, weight, waist FROM personal_data" ).fetchall()
        ,columns=['名前', '身長', '体重', 'ウエスト']
    )
print( "n*****行列(縦横)変換の表示*****" )
print( df.T )
conn.close()

上記のソースの「df.T」が行列(縦横)変換している部分です。

ってこれだけですか?
そう、これだけ。簡単ですね。

実行結果は


*****行列(縦横)変換の表示*****
         0     1     2     3
名前    山田太郎  岩鬼正美  殿馬一人  土井垣将
身長     175   190   165   185
体重     120   100    70    90
ウエスト   130   110    75   105

になります。

まとめ

SQLだけでやろうと思えばちょっとしたテクニックが必要なデータの行列(縦横)表示ですが、PandasのDataFrameを使うと「df.T」と「T」をつけるだけで行列(縦横)表示ができちゃいます。

以上、PythonのPandasのDataFrameを使って行と列の変換を行う方法でした。

タイトルとURLをコピーしました