本サイトにはプロモーションが含まれています

実務に生かすPythonサンプル

Pythonでcsvファイルの読み込み【csvモジュール】

こんにちは。現役Webエンジニアの三年坊主です。

今回は、Pythonでcsvファイルを読み込みたい人の、このような疑問に答えます。

「Pythonでcsvファイルを読み込みたい。普通にテキストファイルをopenするのと違うんだろうか?pandasが便利みたいなことも聞くけど、今はライブラリをインストールせずに気軽に試してみたい。」

 

 

この記事では、大学の研究と自分の趣味で、合わせて5年以上Pythonを使ってきた経験を生かして、標準のcsvモジュールを使ってPythonでcsvファイルを読み込む方法を紹介します。

 

この記事の内容

  • csvとは
  • 読み込むcsvファイルを用意する
  • Pythonでcsvファイルの読み込み
  • Pythonで読み込んだcsvデータの扱い方
  • csvデータにカンマが含まれる?

 

csvとは?

csvは、”Comma-Separated Values“の略です。

つまりcsvファイルというのは、項目をカンマ(,)で区切ったテキストファイルのことをさします。

タブで区切っていたらtsvファイル “Tab-Separated Values” と呼んだりします。

 

「csvって、よく聞くけどたしかに何の略かあまり意識したことなかったかも・・・」

 

読み込むcsvファイルを用意する

csvファイルは、世の中のいろいろなところで活用されています。

ほんの一例ですが、クレジットカードの利用履歴をcsvファイルとしてダウンロードできる会社もあるようです。

今回はためしに、エポスカードの利用履歴を使ってみることにします。フォーマットはこのような感じです。

 

 

「ちょっと恥ずかしいので、数字を変えたり余計な行を取り除いたりしています・・・」

 

 

nkfコマンドでファイルの文字コードを確認すると、Shift_JISのようでした。

 

Pythonでcsvファイルの読み込み

Pythonでcsvファイルを読み込む処理の流れはこんな感じです。

  • (1) csvモジュールをインポート
  • (2) csvファイルを開く
  • (3) 開いたcsvファイルからreaderオブジェクトを作成する
  • (4) readerオブジェクトを使って一行ずつデータを取得する
  • (5) csvファイルを閉じる

 

(1) csvモジュールをインポート

標準ライブラリからcsvモジュールをインポートします。

このライブラリはcsvファイル専用というわけではなく、delimiter(あとで説明)を変えたりして、様々なフォーマットに対応できます。

ファイル名も変数に入れておきましょう。

 

(2) csvファイルを開く

組み込み関数 open() を使って、ファイルを読み込み用に開きます。

csvfile がファイルオブジェクトの場合、 newline=” として開くべきです。

csv.reader

 

ファイルの文字コードも指定しましょう。今回は、encoding=’shift_jis’ と指定します。

7.2.3. 標準エンコーディングに書いてあるように、csshiftjis, shiftjis, sjis, s_jisなどの別名を使っても大丈夫です。

 

 

(3) readerオブジェクトを作成

ヘッダーを読み飛ばしたいとき、header = next(csv_reader) を使って、ヘッダーの次の行をさすようにします。

 

(4) 一行ずつデータを取得

readerオブジェクト(csv_reader)を使って、一行ずつリスト形式でファイルの中身を読み込みます。print文で中身を確認してみましょう。

 

(5) csvファイルを閉じる

openしたファイルを忘れずにcloseしましょう。

 

(1)〜(5)を通して実行する

 

with構文を使って少し楽をする【コピペ用】

with構文を使うと、ファイルのクローズを自動的に行えるので、csvファイルの読み込みをよりシンプルに書くことができます。

 

おまけ:readerオブジェクトって何?

ファイルの「読み込み方」と「読み込み状態」を保持しておくオブジェクトです。読み込みに関していえば、中身(属性)は主にこの2つ。

  • dialect:方言を設定する。「方言」はつまり「ファイルをどうやって読み込むのか」のことで、「フィールド間を区切る文字」や「改行の取り扱い方」などをまとめたものを方言と呼んでいます。
  • line_num:すでに読み込んだ行数

が設定されています。

 

一行読み込むごとに、line_numの値が1ずつ増えているのが分かります。1がないのは、header = next(csv_reader)で一行読み飛ばしているからですね。

 

csv.reader と csv.DictReader

これまで見てきたように、csv.readerを使うと、各行をリスト形式で読み込めます。

 

一方で、csv.DictReaderを使うと、各行を辞書形式で読み込めます。

 

csv.readerと比べたメリット

  • header = next(csv_reader)でヘッダーを読み飛ばす必要がない
  • ヘッダーとデータの対応が分かりやすい(「ご利用場所」が「ファミリーマート」だとすぐにわかる)

 

Pythonで読み込んだcsvデータの扱い方

csv.readerを使う【コピペ用】

csv.readerを使って、各行をリスト形式で読み込みます。

rowのように、必要なフィールドを番号で指定して使います。

 

csv.DictReaderを使う【コピペ用】

csv.DictReaderを使って、各行を辞書形式で読み込みます。

row[‘ご利用年月日’]のように、必要な項目にアクセスして使います。

 

csvデータにカンマが含まれる?

“4,246”

のように、金額の数字にカンマが入っているとき、delimiterに「区切り文字」、quotecharに「囲い文字」を指定して、データの中身と区切り文字を区別できるようにします。

 

Pythonでcsvファイルを読み込んで、快適なエンジニア生活を送りましょう。

より本格的にPythonを学ぶなら

より本格的にPythonを学びたい場合には、プログラミングスクールを活用するのがオススメです。

プログラミングスクールって、「プログラミングって何?」みたいな超初心者だけのものと思っていませんか?

最近では、経験者向けにも、レベルや希望に合わせた様々なコースが展開されています。

オススメなのが、Aidemyです。

特徴は、人工知能特化型のプログラミング学習サービスということ。

Pythonを学べるコース

  • AIアプリ開発コース(画像認識)
  • データ分析コース(数値予測)
  • 自然言語処理コース
  • E資格対策コース
  • クラウドAI開発コース
  • 実戦データサイエンスコース

Aidemyの教材は「理論よりもまずは実践」をうたっていて、他社と比較すると、かなり本格的に、現場でも実際に使われるスキルを身につけられます。

そして、どのコースも同じ料金で受け放題

余裕があれば、AIアプリ開発コースの内容と、クラウドAI開発コースの内容を組み合わせて学習することもできてしまいます。

無料のカウンセリングで、不明点や学習したい内容をまずは相談してみましょう。

» Aidemyの無料カウンセリングはこちら

 

もう一つオススメなのが、TechAcademyです。

オンラインプログラミングスクール受講者数No.1の実績に加えて、受講生限定の転職サポートもあり、TechAcademyで学んだスキルを生かせる職場への転職も可能です。

「セット割」を活用すると、Pythonを使った人工知能・データ分析のスキルを過不足なく身につけられます。

1週間の無料体験があるので、システムの使い心地やサポート体制をのぞいてみるのがいいかなと思います。

» TechAcademyの無料体験はこちら

 

どちらのスクールも質問サポートが充実していて、早ければその場で、遅くとも次の日には疑問が解消するので、

「独学でプログラミングを勉強してきたけど、行き詰まるたびに時間が奪われるし、周りに気軽に聞ける人もいない」

みたいな無駄な一日を過ごすことがなくなります。

 

以上、Pythonを本格的に学べるプログラミングスクールを2校紹介しました。どちらも最初に20〜30万円くらいの投資が必要ですが、実際にスキルを身につけてしまえば、あとで簡単に回収できるはずです。例えば、

  • Pythonエンジニアに転職して年収を上げる:50万円
  • 副業で業務委託:20万円(時給5,000円で週10時間、1か月)
  • クラウドソーシングの単発案件:5〜10万円

このように、プログラミングスクールにお金を払ってもすぐに回収できることが分かると思います。

実際に、Pythonを使う業務委託で時給5,000円というのは普通にあるので、スキルをつけたら「週末にちょっと作業」を1〜2か月続けるだけですよね。

Google検索で問題解決するのもいいですが、「毎回ちょっと場当たり的に対応していて苦しいな・・・」と感じているあなたは、一度腰を据えてPythonを本格的に学ぶことを選択肢に入れてみてはいかがでしょうか。

記事で紹介したプログラミングスクールの一覧

  • Aidemy→人工知能特化、無料カウンセリングあり
  • TechAcademy→受講者数No.1、1週間の無料体験あり

RELATED POST

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.