べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【Python Coding】整然データ(Tidy Data)

code python

こんにちは、TAKです。
前回「データ分析に必須の整然データ」について解説したので、今回は実際にpythonを使ったcodingを紹介していきたいと思います。

【こんな人に読んで欲しい記事です】
1. 整然データ(Tidy Data)をpythonで実装してみたい方
2. データサイエンスの勉強をしている方
3. データ分析力を高めたいと考えている方
python codingなので、いつものようにJupyter Notebookベースでコードを紹介していきます。
必要に応じて、みなさんもローカル環境で実装トライしてみてくださいね。
今回は3つの簡単な具体例を用いて雑然データを整然データにCodingで変換することを目的とします。
【Case1】3年間分の売上・原価・人件費推移が記載された雑然データ
【Case2】2020年1月~12月の製品別売上高が記載された雑然データ
【Case3】2020年1月~12月の製品に係る売上高・売上原価・粗利率が記載された雑然データ

【Case1】Python Coding

必要ライブラリのインポート(共通)

まずはpythonで必要ライブラリをインポートしていきましょう。
と言っても、今回はpandasのインポートのみでOKです。

データセットの準備&確認

具体例の一つ目は、冒頭で説明したような下記企業データが格納されたデータを使います。

【具体例①】3年間分の売上・原価・人件費推移が記載された雑然データ
【CSVファイルイメージ】

よくあるデータ形式ですが、これは雑然データなのでデータ分析の観点からは扱いにくいですね。
なぜ雑然データなのか今一つわからない方は、前回記事を参考にしてみてください。

Data Frameとして格納

まずCSVファイルを読み込み、Data Frame形式として格納します。
ここは読み込むファイルを指定するだけなので、やり方さえ理解していれば難しくないですね。
※変数名は自分の好きなように変更してみてください。

CSVファイルと同じデータがData Frameとして格納されたことが確認出来ますね。

Tidy Dataに変換

では今回のメインである「雑然データを整然データに変換」する作業をしていきます。
ポイントは、pandasのmeltメソッドを用いる点です。

結論から言うと、下記Codingのみで雑然データから整然データへの変換が可能となります。

ポイントをまとめるとこのようになります。

■ pd.melt
整然データに変換するために使用
■ 引数の意味
frame      ・・・ 変換対象となるデータフレームを指定
id_vars    ・・・ メインとなる軸を指定。この例では「Name」が該当
value_vars ・・・ 集計対象の値の軸を指定。この例では金額を自動集計すれば問題ないので不要
var_name  ・・・ 変数列の名前を任意で指定。この例ではデフォルト指定とした(=variable)
value_name ・・・ 値列の名前を任意で指定。この例では「Amount」と指定とした
整然データに変換するためのmeltメソッドと引数の意味がわかっていれば、雑然データから整然データへの変換は難しくないので、まずは基本をしっかりと抑えてみてください。

【Case2】Python Coding

データセットの準備&確認

具体例の二つ目は、冒頭で説明したような下記企業データが格納されたデータを使います。

【具体例②】2020年1月~12月の製品別売上高が記載された雑然データ
【CSVファイルイメージ】

これも雑然データなのでデータ分析の観点からは扱いにくいですね。

Data Frameとして格納

先ほど同様に、まずCSVファイルを読み込み、Data Frame形式として格納します。
※変数名は自分の好きなように変更してみてください。

CSVファイルと同じデータがData Frameとして格納されたことが確認出来ますね。

Tidy Dataに変換

次に「雑然データを整然データに変換」する作業ですね。
先ほどの例と同様にCodingすればOKなので、わかる人はまず自分で実装してみてください。

雑然データから整然データへの変換Codingは下記のようになります。

※整然データに変換した後のデータ数が縦長になるため、headを用いて5個分のみ表示しています。
ポイントをまとめるとこのようになります。

■ pd.melt
整然データに変換するために使用
■ 引数の意味
frame      ・・・ 変換対象となるデータフレームを指定
id_vars    ・・・ メインとなる軸を指定。この例では「YE」と「Month」が該当
value_vars ・・・ 集計対象の値の軸を指定。この例では金額を自動集計すれば問題ないので不要
var_name  ・・・ 変数列の名前を任意で指定。この例では「Product」と指定とした
value_name ・・・ 値列の名前を任意で指定。この例では「Sales」と指定とした
基本的には先ほどの例と同じですが、「メインとなる軸を2つ指定」する点が先ほどとの相違点です。
その他は変数の名前の違い程度なので、変換の仕方自体は同じと言えますね。

【Case3】Python Coding

データセットの準備&確認

具体例の三つ目は、冒頭で説明したような下記企業データが格納されたデータを使います。

【具体例③】2020年1月~12月に製品に係る売上高・売上原価・粗利率が記載された雑然データ
【CSVファイルイメージ】

これも雑然データなのでデータ分析の観点からは扱いにくいですね。

Data Frameとして格納

これも繰り返しとなりますが、まずCSVファイルを読み込み、Data Frame形式として格納します。
※変数名は自分の好きなように変更してみてください。

CSVファイルと同じデータがData Frameとして格納されたことが確認出来ますね。

Tidy Dataに変換

では最後の「雑然データを整然データに変換」する作業をしていきましょう。
先ほど同様、わかる人はまず自分で実装してみてください。

雑然データから整然データへの変換Codingは下記のようになります。

※整然データに変換した後のデータ数が縦長になるため、headを用いて5個分のみ表示しています。
ポイントをまとめるとこのようになります。

■ pd.melt
整然データに変換するために使用
■ 引数の意味
frame      ・・・ 変換対象となるデータフレームを指定
id_vars    ・・・ メインとなる軸を指定。この例では「YE」と「Month」が該当
value_vars ・・・ 集計対象の値の軸を指定。この例では「Sales」「Cogs」「Ratio」が該当
var_name  ・・・ 変数列の名前を任意で指定。この例では「Name」と指定とした
value_name ・・・ 値列の名前を任意で指定。この例では「value」とした(デフォルト設定)
最後も変換の仕方自体は同じですが、「メインとなる軸を2つ指定」した上で、「値自体の軸を指定」する点が先ほどとの相違点です。これは、雑然データ時に「Sales」「Cogs」「Ratio」と各列でそれぞれ意味の異なる値が格納されているためです。
ちなみに先頭5行のみ表示していますが、すべて「Sales」表示となってしまっているため、他のデータも適切に整然データとして変換できているか、ランダム要素を加えて確認した結果が下記です。
他の科目についてもうまく整然データとして変換出来ていますね!

まとめ

いかがだったでしょうか?
今回は雑然データを整然データに変換することを目的としたCodingを紹介してみました。
ビジネスでは雑然データが多く存在しているので、整然データに変換した上でデータ分析に繋げることが出来れば、業務スピードも大幅にアップします。

是非色んなデータで試してみてください!
また別の機会で「整然データをベースとして、どのようにデータ分析をすればいいか」についても記事を書いていこうと思います。

書籍の紹介

最後に、今回紹介したような「pandas操作」についてスキルを高めたい方向けにオススメの書籍を紹介したいと思います。興味のある方は是非チェックしてみてくださいね。

 [affi id=23]

pandasを使ったデータ分析を中心に紹介されており、辞書代わりにも使えるのでオススメです。
では今回はこのへんで。