Python 学習:CSV ファイル・アクセス

2014-06-19 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
4、2、3、0、0、 0、0、0、0、0(41)で、換算ポイント 74pt 。
特段のランク変動は無し?
・-・ - -・

さて、本文。

先日(2014-06-16)の記事:
Python 学習: xls ファイル・アクセス
では、Microsoft Excel のファイルについてだった。

もっと、汎用的な“CSV”ファイルについては、どうか?


本家“Python 2.7ja1”ドキュメント:
13.1. csv - CSV ファイルの読み書き
  CSV (Comma Separated Values、カンマ区切り値列) と呼ばれる形式は、
  スプレッドシートやデータベース間でのデータのインポートや
  エクスポートにおける最も一般的な形式です。
  ”CSV 標準” は存在しないため、 CSV 形式はデータを読み書きする
  多くのアプリケーション上の操作に応じて定義されているにすぎません。
  標準がないということは、異なるアプリケーションによって
  生成されたり取り込まれたりするデータ間では、
  しばしば微妙な違いが発生するということを意味します。
  こうした違いのために、複数のデータ源から得られた CSV ファイルを
  処理する作業が鬱陶しいものになることがあります。
  とはいえ、デリミタ (delimiter) やクオート文字の相違はあっても、
  全体的な形式は十分似通っているため、こうしたデータを効率的に操作し、
  データの読み書きにおける細々としたことをプログラマから隠蔽するような
  単一のモジュールを書くことは可能です。

  csv モジュールでは、CSV 形式で書かれたテーブル状のデータを
  読み書きするためのクラスを実装しています。
  このモジュールを使うことで、プログラマは Excel で使われている
  CSV 形式に関して詳しい知識をもっていなくても、
  “このデータを Excel で推奨されている形式で書いてください” とか、
  “データを Excel で作成されたこのファイルから読み出してください”
  と言うことができます。
  プログラマはまた、他のアプリケーションが解釈できる CSV 形式を記述したり、
  独自の特殊な目的をもった CSV 形式を定義することができます。

  csv モジュールの reader および writer オブジェクトは
  シーケンス型を読み書きします。
  プログラマは DictReader や DictWriter クラスを使うことで、
  データを辞書形式で読み書きすることもできます。
  ・・・・・
  ・・・・・
とある。


それで、皆様のブログ等はどうか?

Python 学習:pandas 利用?
の時にブックマークした「Qiita」に1つあった。

okadateが2013/11/29に投稿 (2013/12/10に編集) とある
PythonでCSVの読み書き
  csvファイルの読み書きメモ.
  読み込み

import csv

csvfile = open( 'filename.csv', 'r' )
reader = csv.reader( csvfile )
header = next( reader )
for row in reader:
print row
csvfile.close()


  追記 2013/12/01
  Python Documentではwithを使っていたので転記.

import csv
with open( 'some.csv', 'rb' ) as f:
reader = csv.reader( f )
for row in reader:
print row


  close()がいらないそう.他にも利点があるかあとで調べよう.

最初のコードが分かりやすいが、
“with”を使った方がイイのかな?


もう1つ、ブログ記事。
「Notes on Science」の 2013.12.29 付記事:
matplotlib
  Pythonのmatplotlib覚え書き
  2013/12/29 更新 / 2013/8/6 更新 / ・・・ / 2013/1/12 リリース

  csvファイルから折れ線グラフを描く場合の基本的なプログラム
  linegraph.py data.csv
  ・・・・・
  ・・・・・
  data.csvは下のような内容が数千行
  2012-10-08 16:20:50,74.3,48.1
  2012-10-08 16:30:50,74.6,47.7
  ・・・・・
  ・・・・・

import matplotlib.pyplot as plt
import sys, csv, datetime
date, ch1, ch2 = [], [], [] # 配列変数を定義
f = csv.reader( open( sys.argv[1] ) ) # 引数にファイル名を指定してファイルを開く
for line in f: # 各列のデータを取得。1列目は日付型として取得
date.append( datetime.datetime.strptime( line[0], '%Y-%m-%d %H:%M:%S' ) )
ch1.append( float( line[1] ) )
ch2.append( float( line[2] ) )
fig = plt.figure( figsize=(16,9) ) # グラフのサイズを1600*900pixelに指定
fig.autofmt_xdate() # 日付型の目盛を作るのに必要らしい
plt.subplot(111) # subplot(LMN)で、Lが縦の区画数、Mが横の区画数、Nが対象の区画
plt.plot( date,ch1, '-', linewidth=1 ) # dateとch1に関するグラフをプロット
plt.plot( date,ch2, '-', linewidth=1 ) # -はプロットを線でつなぐ形式。マーカー無し
plt.legend( ( 'Ch1', 'Ch2' ), loc='center left', fontsize='10') # 凡例の内容と表示位置、文字サイズ(plotの後
plt.show()
plt.savefig( sys.argv[1] + '.png' ) # データファイル名+.pngを出力



よし、
本家“Python 2.7ja1”ドキュメントの「13.1. csv - CSV ファイルの読み書き」
を良く読んで勉強ダ。


本日はここまで。

Python 学習は続く、・・・


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140618
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク