#csvデータの形がいびつで読み込みにくい場合の対処法
pandasを利用したcsvデータの読み込みで躓いてしまったことがありました。
ちょびっと時間を溶かしてしまったので備忘録としてここに残します。
計測器のメーカーや種類によって、大量のヘッダーやフッター、計測条件などが計測したcsvデータの中に入っていることが多いです。
計測条件は用途によって形が変わり、何行、何列で記載されているかは、csvデータを開いてみないとわからないです。
開ける場合は開いて解決で良いのですが、システムを作ってどんなcsvが来てもエラーで止まらずにとりあえず読み込みたい場合もあります。
なにも考えずにpandasに流し込むとこんなエラーで叱られて中身が確認できない場合があります。
[code]
import pandas as pd
path = "test.CSV"
df = pd.read_csv(path,encoding='shift-jis')
[output]
ParserError: Error tokenizing data. C error: Expected 2 fields in line 5, saw 10
ところが、
あらかじめ列名を適当に作って、namesで与えてあげると読み込むことが可能になります。
[code]
import pandas as pd
path = "test.CSV"
col_name = range(1,15,1)
df = pd.read_csv(path, names=col_name,encoding='shift-jis')
_df = df.fillna('')
_df.head(7)
[output]
1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 #BeginHeader 47
1 #FormatType ***
2 #FormatVersion R1.00.00
3 タイトル
4 ユニット番号 MASTER UNIT1 UNIT2 UNIT3 UNIT4 UNIT5 UNIT6 UNIT7 UNIT8
5 ユニット種別 *** (1)** (2)** 未設定 未設定 未設定 未設定 未設定 未設定
6 計測モード ノーマルモード
NaNだらけなので、適当にfillnaで埋めています。
あとは煮るなり焼くなり自由です。