Pythonプログラミング

Python csvデータをPandasで読み込む ⇒Matplotlibでグラフ化

助手ミルク
助手ミルク
csvデータの読み込みですか!?少し地味なテーマな気もしますが…

虎ぱぱ
虎ぱぱ
何を言っているんですか!?機械学習を行う上でcsvデータの読み込みはとても大事なんですよ!!

助手ミルク
助手ミルク
そうなんですか!?どんな時に使うんです??

虎ぱぱ
虎ぱぱ
そもそもみんなExcelを使いますよね??なので,点列データでのやり取りは多くあります.インターネット環境からのインストールの主要形式だったり,FA系では計測機器からデータを取得・保存した場合など,多岐に渡ります.

助手ミルク
助手ミルク
なるほど。それは大事ですね。そもそもcsvってなんの略なんです??

虎ぱぱ
虎ぱぱ
超 寒い ヴィジュアル系バンド。

助手ミルク
助手ミルク
お前が超寒いわ。

 

どうでも良いかもいれませんが正しくは、Comma Separated Valuesの略語で、コンマ(,)で区切りを定義しているデータのことで、拡張子は”.csv”です。

 

今回この”csvデータ”をPythonで読み込んでグラフ化する方法について解説していきますが、Pandas等のライブラリを使用するため、環境が整っていない方は”ANACONDA”のインストールをお勧めします!!

”ANACONDA”でPythonの機械学習やデータ分析を効率化【インストール方法と使い方】Pythonのディストリビューション『ANACONDA』今や機械学習やデータ分析,AIプログラミングには欠かせないアイテムです。AIエンジニアを目指す方はまずインストールしといて間違いないでしょう。この記事を見ればダウンロード⇒インストール⇒動作確認の手順がわかります。...

 

 私は普段お気に入りのIDE(開発統合環境)でVisualStudioCodeを使用してます。Python環境の整備がまだという方は☟☟☟の記事を参考にして下さい。

VSCodeとPythonを連携設定【日本語表示対応などを図解で解説】MicroSoft社のIDE『Vscode(VisualStudiocode)』Windowsユーザなら使いづらいと感じる方はすくないはず。もちろんMacユーザにも人気があります。今回はVscodeでPythonを動かすまでのインストール作業や設定を記事にしました。これ見たらすぐVscode使えるようになります。...

 

読んで得する人は?Pythonでcsvを扱う人≒データサイエンス系エンジニア

 

 

前述したようにcsvデータを読み込むことは現場で多く発生します!!

 

 

データサイエンティストや研究系のエンジニアの方は、読み込んだデータに統計処理を施したり、データを使って機械学習や分析を行ったりします。

 

 

なので今回この記事を読んで得する方はこちら☟☟☟

 

 

  • Pythonでcsvデータを読み込んでなんかしたい人



  • 機械学習、AI系のエンジニア・データサイエンティストを志す方



  • Pythonの”Pandas”これ『パンダス』と読みます.ギリ知ってた方 

 

助手ミルク
助手ミルク
csvデータを読み込んで終わりということはないですもんね。

虎ぱぱ
虎ぱぱ
そうですね。少なくともグラフ化してデータを見て何かを判断しますね。データサイエンティストにとっては日常ですね(*’ω’*)

 

Pandasでcsvデータを読み込み サンプルコードあり

①基礎 同一フォルダ上のデータを読み込む

 

助手ミルク
助手ミルク
読み込むデータはどこに保存されていてもいいんですか??

虎ぱぱ
虎ぱぱ
プログラミングの方法でどうとでもなるんですが,まずは一番簡単な方法を説明しますのでcsvを読み込むプログラム読み込みたいcsvデータは同一フォルダ上に保存しておきましょう!!

 

下準備として、同一フォルダ上にcsv-read.py(プログラムデータ)sample.csv(読み込むcsvデータ)を保存します。

 

 

虎ぱぱ
虎ぱぱ
それでは早速csvを読み込むコードを書いていきます!!今回読み込むデータは1次元の配列データです!!

 

コードはこちら☟☟☟

import pandas as pd #pandasをimport 
data = pd.read_csv('sample.csv') #csvデータ読み込み
print(data) #読み込んだデータを表示

 

 

 

デバック(F5キー)の結果はこちら☟☟☟

 

 

下にスクロールしていくと…

 

助手ミルク
助手ミルク
数値が羅列されて…読み込めてますね…ん!?最後の[6905 rows x 1 columns]ってなんですか???

虎ぱぱ
虎ぱぱ
[6905 rows x 1 columns]はデータのサイズを表しています!!6905行で1列のデータということです!!

助手ミルク
助手ミルク
なるほど!!それ以外は簡単!!もはや説明不要ですね(*’ω’*)pandas便利。

虎ぱぱ
虎ぱぱ
6905点のそこそこ重いデータなのに読み込み速度も問題ないし…pandas…パンダス…すばらしい…名前もおいしそうだし。

助手ミルク
助手ミルク
多分だけどパンダはうまくねーぞ。雑食だからな。あと、動物保護団体にしかられろ。

 

②応用 ファイルパスを指定してデータを読み込む

 

助手ミルク
助手ミルク
プログラムと同じフォルダにないとデータが読み込めないって少し不便ですよね??

虎ぱぱ
虎ぱぱ
めちゃ不便です笑 なので、任意のファイルを開いて保存する方法を紹介します!!

 

 

それではコードを書いていきます!!☟☟☟

# モジュールのインポート 
import os, tkinter, tkinter.filedialog, tkinter.messagebox 
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
# ファイル選択ダイアログの表示 
root = tkinter.Tk() root.withdraw() 
# ファイルの拡張子 
fTyp = [("","*")] or fTyp = [("","*.csv")] 
fTyp = [("csv-file","*.csv"), ("All-file","*")] 
# フォルダパスを取得 
iDir = os.path.abspath(os.path.dirname(__file__)) 
tkinter.messagebox.showinfo('解析プログラム','ファイルを選択してください!') 
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir) 
print(file) 
# ファイルパスの認識 
file1 = file.replace('/', os.sep) 
file_name = os.path.basename(file) 
data_path = os.path.dirname(file1) 
os.chdir(data_path) 
print(file_name) 
# csvファイル読み込み 
data = pd.read_csv(file_name,encoding = "utf-8",skiprows = 100)
skiprows = 5 
encoding="shift_jis" or "utf-8" 
print(data)
#データの読み込み 
data = pd.read_csv('sample.csv')
print(data)
 

このコードをデバッグするとまず…

 

 

 

 

 

確認のダイアログが出ますので、『OK』をクリックします。そうすると…

 

 

 

 

 

 

読み込むファイルの選択画面が開かれますので、任意に指定し、読み込みます。

デバッグの結果…

 

 

 

 

 

同一フォルダ内で読み込んだ時と同様ですので、正しく読み込めています(*’ω’*)

 

 

助手ミルク
助手ミルク
すごい!!これなら大分便利ですね。わざわざデータを移動しなくて良い。

虎ぱぱ
虎ぱぱ
これで読み込みに大分汎用性が出ましたね!!フォルダパスのみ指定する形にしてループさせると複数ファイルを読み込むことも可能です.

助手ミルク
助手ミルク
も、点列データだけ見ていても解りづらいですね。

虎ぱぱ
虎ぱぱ
その通り!!次は取得したデータをグラフ化していきましょう!!

 

③可視化 読み込んだデータをグラフ化する。

虎ぱぱ
虎ぱぱ
今回読み込んだデータは、ある計測機器の電圧アナログ信号を100Hzの周波数で取り込んだデータです.

助手ミルク
助手ミルク
つまり10ms周期で取り込んだデータですね!!周波数(Hz)は前勉強したからばっちりだわ!!

虎ぱぱ
虎ぱぱ
さすがミルク様!!周波数がよくわからいないという方はこちらを読んで見て下さい!!ということで今回は横軸-時間(Time)・縦軸-電圧(Voltage)の散布図を作成していきます!!

 

周波数の求め方 ヘルツ・特性・周期とは?【わかりやすく図解で解説】周波数ってよく聞くけどなに??って方多いと思います。実は身の周りに溢れていて誰もが触れてる『周波数』その特性や周期との関係、ヘルツって何?といった細かな疑問にお答えします。...

 

さきほどのコードに☟のグラフ化コードを追加して下さい!!

 

 
[python]</pre>
<pre class="language-python"><code>#Y軸(振幅)の定義 
y = np.array(data) 
y = y.reshape(-1,) 
#X軸(時間軸)の定義 
samp = 100 #サンプリング周波数(Hz) 
samp_t = 1/samp x = np.array(np.arange(0,(samp_t*len(y)),(1/samp))) 
#グラフ化 
plt.title("Graph") 
plt.xlabel("time(s)")
#横軸ラベル
 plt.ylabel("Voltage(v)")
#縦軸ラベル plt.grid(True)#目盛表示 
plt.tight_layout()
#全てのプロットをボックス内に 
plt.plot(x,y) 
plt.show()</code></pre>
<pre>[/python]

 

実行し、さっきと同じようにファイルを選択すると…

 

散布図が表示されます(*’ω’*)

助手ミルク
助手ミルク
やっぱりグラフ化されるとわかりやすくていいですね!!

虎ぱぱ
虎ぱぱ
そうですね!!分析とか数値化とかよりも前に生の波形を確認するのはとても大切です!!プログラミング初心者の方は、確認のためにExcelでも同じようにグラフ化してみると良いですよ(´・ω・`)

 

まとめ csvの読み込みはpandasで簡単にできちゃう

今回はPandasとMatplotlibを使ってcsvデータを読み込み、グラフ化しました。以下まとめです。

  • Pandasを使えばcsvが簡単に読み込める。

     

  • 任意のファイルパスを指定してデータを読み込むには少し工夫が必要

     

  • グラフ化はMatplotlibで。

     

Matplotlibを使ったグラフ化については次回以降に詳しく触れていきます!!

応用編として、機械学習に関する記事も書いてます!!良かったら読んでみて下さい(*’ω’*)

Scikit-learnで非線形回帰分析【Python 回帰分析③】CreepyNutsのCDが欲しい!嫁さんの許可を取るためにAIエンジニアがPythonを駆使してCD価格を非線形回帰分析で予測!!Pythonのコードを公開して、非線形回帰分析について詳しく説明してます!!...

良くPythonの勉強はどうやって?と聞かれますが、『完全独学』です。最後に高卒者の私が一人で勉強してとても助けられた書籍を紹介します(*’ω’*)

座右の銘は明日は明日の風が吹く。虎ぱぱでした♪

PythonでAIを作ってみたい⇒誰でも勉強すればできる?
虎ジュニア
虎ジュニア
ぱぱー僕もAI作ってみたいよ~機械学習教えてよ~
虎ぱぱ
虎ぱぱ
ジュニアにはまだ早いよ。大人になったらね~
助手ミルク
助手ミルク
ちょっ…いつも挑戦がどうとか言っときながら…子供の夢を奪う気!?AIは誰でも作れるんじゃなかったの!?
虎ぱぱ
虎ぱぱ
そりゃ…いつも言ってる通り、正しく学べば誰でも作れますよ!!(そうは言ってもジュニアは3歳だぞ。)