こんにちは、うさじんです。
前回の記事では【Excel】の散布図グラフを使ったデータの視覚化を目的としました。
今回は【Python】を使ってデータのグラフ化をやってみました。
前回記事 データを【Excel】の散布図グラフで視覚化する方法
ちょっと前まではPythonを使ってデータグラフの描画は行わなかったのですが、
最近は特殊な分析を行ったりすることやデータの整形を行う場合にPythonを使うことが増えてきました。
忘備録として、手持ちのデータをPythonに読み込んでグラフ化するまでの手順を記述したいと思います。
具体的に以下の手順でグラフ描画まで行いました。
- データをpandaでdataframe形式で読み込む
- 読み込んだデータをpandas.plotでグラフ化する
私はPythonを使う場合、「Visual Studio Code」を使って「.ipynb」形式でコードを記述しています。
PythonやVSCについては、また今度記事にしたいと思います。
【panda】データをpandaでdataframe形式で読み込む
まずはVSCを立ち上げ、現在のターミナルでpandasがインストールされていることを確認します。
python -m pip freeze
未インストールの場合、pandasをインストール
pip install pandas
読み込むデータは前回記事で使用した以下のデータです。
A列~E列のデータをCSV形式に保存したデータをサンプルとして使用します。
ファイル名称は「test_data.csv」としています。
import pandas as pd #pandasのインポート
df = pd.read_csv('test_data.csv') #csvの読み込み
print(df) #dfの出力
実行結果
ただの確認なので仕方ないのですが、print()での出力って見ずらいですね。
個人的にはdfで出力したほうが見やすくて好きです。
しかし、indexの0行に単位文字が入り込んでいます。このままでは使用出来ないので少しコードを変更します。
import pandas as pd #pandasのインポート
df = pd.read_csv('test_data.csv', skiprows=[1]) #csvの読み込み indexの0行をスキップして読み込み
print(df) #dfの出力
うまく0行を削除することができました。
念のため、dataframeのdtypesを出力してデータ型を確認します。
objectであれば文字列として認識されているため、グラフを書くのにデータ型の変換が必要となります。
print(df.dtypes) #dfのデータ型の出力
float64として読み込んでいるため、問題なくグラフを作ることが出来ます。
もしデータ型がobjectの場合は以下で修正します。
df=df.astype(float) #データ型の変換 文字データから数値データへ
【pandas】読み込んだデータをpandas.plotでグラフ化する
早速グラフ化を行いたいところですが、気をつけなければいけないことが一つあります。
pandas.plotは日本語に対応していないため、文字化けしまいます。
そのため、japanize_matplotlibのライブラリで日本語を表示させます。
ターミナルでjapanize_matplotlibをインストールし、時刻列を横軸にしたグラフをプロットします。
pip install japanize_matplotlib
import japanize_matplotlib #日本語ライブラリのインポート
df.plot(x=df.columns[0]) #横軸に時刻列、縦軸にデータを表示
実行結果
csvの読み込み後、2行目を削除する方法もある
前項で示した、2行目をスキップしてCSVを読み込む方法もありますが、
読み込み後に2行目を削除する方法もあります。
#CSVデータ全体を読み込み
temp = pd.read_csv("test_data.csv")
df=temp.drop(temp.index[[0]]) #読み込んだtempの0行目を削除
こちらは少し記述が多くなります。
CSV全体を読み込むことで0行目が文字となることからdataframeのデータ型がobjectになることが原因です。
astypeで数値データ型に変換する必要があります。
最終コード
2行目をスキップする方法
import pandas as pd #pandasのインポート
import japanize_matplotlib #日本語ライブラリのインポート
#データの2行目をスキップして読み込み
df = pd.read_csv("test_data.csv", skiprows=[1])
#結果確認 1列目を横軸に指定
df.plot(x=df.columns[0])
2行目を削除する方法
import pandas as pd #pandasのインポート
import japanize_matplotlib #日本語ライブラリのインポート
#CSVデータ全体を読み込み
temp = pd.read_csv("test_data.csv")
df=temp.drop(temp.index[[0]]) #読み込んだtempの0行目を削除
df=df.astype(float) #データ型の変換 文字データから数値データへ
#結果確認 1列目を横軸に指定
df.plot(x=df.columns[0])
参考サイト
サイト名 | URL |
pandasでcsv/tsvファイル読み込み(read_csv, read_table) | note.nkmk.me | https://note.nkmk.me/python-pandas-read-csv-tsv/ |
pandas.DataFrameの行・列を指定して削除するdrop | note.nkmk.me | https://note.nkmk.me/python-pandas-drop/ |
Pandas:図示 | 経済学のためのPython入門 | https://py4basics.github.io/5_pandas_plot.html |
PandasのDataFrameをグラフ表示してCSVでダウンロードする | Qiita | https://qiita.com/FrozenVoice/items/966d2778086f2b707922 |
あとがき
コード自体はシンプルですが、下調べにかなり時間を要しました。
いやーブログ書くのって大変だ。