CSVファイルをPythonで読み書きしてみる
こんにちは。これまでのグラフを描くプログラムでは,データを直接プログラム中に書いていました。
しかし,実際には多くの場合外部ファイルにデータがあることの方が多いと思います。
そろそろ,プログラム中にデータを直接書くのではなく,ファイルから読み込むようにします。
CSVファイルを読み込んでみる
CSVライブラリを使って読み込んでみます。
こんなCSVを読み込みます。
年月日時,気温(℃)
2018/7/23 1:00,30.6
2018/7/23 2:00,29.5
2018/7/23 3:00,29.2
2018/7/23 4:00,28.9
2018/7/23 5:00,28.2
2018/7/23 6:00,28.6
2018/7/23 7:00,29.9
2018/7/23 8:00,33
2018/7/23 9:00,34
2018/7/23 10:00,36
2018/7/23 11:00,37.9
2018/7/23 12:00,38.7
2018/7/23 13:00,39.8
2018/7/23 14:00,40
2018/7/23 15:00,39.3
2018/7/23 16:00,39
2018/7/23 17:00,37.9
2018/7/23 18:00,35.9
2018/7/23 19:00,34.2
2018/7/23 20:00,32.6
2018/7/23 21:00,31.9
2018/7/23 22:00,31.6
2018/7/23 23:00,28.8
2018/7/24 0:00,27.9
このファイルを開いて,表示してみます。
import csv
with open( 'data.csv', 'r', encoding='shift_jis' ) as f:
reader = csv.reader(f)
#header = next( reader )
for row in reader:
print( row )
実行結果です。
['年月日時', '気温(℃)']
['2018/7/23 1:00', '30.6']
['2018/7/23 2:00', '29.5']
['2018/7/23 3:00', '29.2']
['2018/7/23 4:00', '28.9']
['2018/7/23 5:00', '28.2']
['2018/7/23 6:00', '28.6']
['2018/7/23 7:00', '29.9']
['2018/7/23 8:00', '33']
['2018/7/23 9:00', '34']
['2018/7/23 10:00', '36']
['2018/7/23 11:00', '37.9']
['2018/7/23 12:00', '38.7']
['2018/7/23 13:00', '39.8']
['2018/7/23 14:00', '40']
['2018/7/23 15:00', '39.3']
['2018/7/23 16:00', '39']
['2018/7/23 17:00', '37.9']
['2018/7/23 18:00', '35.9']
['2018/7/23 19:00', '34.2']
['2018/7/23 20:00', '32.6']
['2018/7/23 21:00', '31.9']
['2018/7/23 22:00', '31.6']
['2018/7/23 23:00', '28.8']
['2018/7/24 0:00', '27.9']
このように,リストとしてデータをデータを読み込むことができます。
なお,プログラム中5行目のコメントを実行するように戻すと,列名を省くことができます。
CSVファイルを書き出してみる
次に,CSVファイルにデータを書き出してみます。
import csv
with open( 'data.csv', 'r', encoding='shift_jis' ) as f:
reader = csv.reader(f)
#header = next( reader )
fw = open( 'data2.csv', 'w', encoding='utf-8' )
writer = csv.writer( fw, lineterminator='\n' )
for row in reader:
print( row )
writer.writerow( row )
fw.close()
読み込むときのプログラムとの違いは,7・8・12・14行目の4行だけです。
あえてUTF−8で書き出しているので,Excelで開くとおそらく文字化けするのではないかと思います。
CSVをPandasを使って読み込んでみる
次にPandasを使ってみます。
import pandas
df = pandas.read_csv( 'data.csv', encoding='shift_jis' )
print( df )
#print( df['年月日時'] )
実行結果は,次になります。
年月日時 気温(℃)
0 2018/7/23 1:00 30.6
1 2018/7/23 2:00 29.5
2 2018/7/23 3:00 29.2
3 2018/7/23 4:00 28.9
4 2018/7/23 5:00 28.2
5 2018/7/23 6:00 28.6
6 2018/7/23 7:00 29.9
7 2018/7/23 8:00 33.0
8 2018/7/23 9:00 34.0
9 2018/7/23 10:00 36.0
10 2018/7/23 11:00 37.9
11 2018/7/23 12:00 38.7
12 2018/7/23 13:00 39.8
13 2018/7/23 14:00 40.0
14 2018/7/23 15:00 39.3
15 2018/7/23 16:00 39.0
16 2018/7/23 17:00 37.9
17 2018/7/23 18:00 35.9
18 2018/7/23 19:00 34.2
19 2018/7/23 20:00 32.6
20 2018/7/23 21:00 31.9
21 2018/7/23 22:00 31.6
22 2018/7/23 23:00 28.8
23 2018/7/24 0:00 27.9
Pandasを使うと,データフレームとしてデータを読み込むことができます。
プログラムの7行目のコメントを外すと,日付日時の部分を取得できます。
Pandasを使ってCSVファイルを書き出してみる
import pandas
df = pandas.read_csv( 'data.csv', encoding='shift_jis' )
print( df )
#print( df['年月日時'] )
df.to_csv( 'data3.csv', encoding='utf-8' )
読み込みのプログラムと比べると,9行目が追加されただけです。
今回はこれでおしまいにします。それではまた。
ディスカッション
コメント一覧
まだ、コメントがありません