超初心者向けPython入門講座

仕事の効率化などにpythonを使いたい!けど何から始めらばよいか分からない、といった初心者の方向けに、pythonの導入から実用的な使い方まで、極力分かりやすくまとめたサイトです。

numpy pandas python

Pythonでcsvの読み込み(numpy,pandas対応)

投稿日:2020-08-11 更新日:

Pythonでデータを扱う際に、データをcsvから読み込むことは多いと思います。

ただし、その方法はいくつかあり、最初はどれを使えばいいか迷うと思います。

そこで、今回はcsvファイルの読み込みについて、標準ライブラリ、numpy、Pandasの3つの方法に分けて解説し、おすすめの使い分けについても説明したいと思います。

解説内容

※基本的には「numpy」か「Pandas」を使う方法がおすすめです。

 

1. 標準ライブラリを用いたcsvの読み込み

まずは、標準ライブラリである「csv」を用いたデータの読み込みについて解説します。

※ただし、この方法はコードが比較的長く、またループ処理でデータを抜き出す必要もあるため、「csvファイル」を読み込む方法としてはあまりお勧めできません。

 

では、今回は下のようなcsvファイルを読み込んでみます。(input.csvという名前)

import csv
with open("input.csv", encoding='SHIFT-JIS') as f:
    rows = csv.reader(f)
    data = []
    for row in rows:
        data.append(row)

上のコードを実行することで、「data」というlist形で読み込むことができます。

 

この「csv」を使ったデータの読み込みについては、下の記事で紹介していますので、気になった方はそちらをご覧ください。

どうしてもデータをlist形式で扱いたい!や、外部ライブラリを使いたくない!ということが無ければ、下で紹介する「numpy」か「Pnadas」を使うことをお勧めします

※numpy配列もlist形式に変換できるので、list形式で扱いたい方も「numpy」を使う方が良いと思います。

Point
  • 標準ライブラリ「csv」を用いるとコードが複雑になる
  • こだわりがない限り「numpy」か「pandas」を利用する

 

 

2. numpyを用いたcsvの読み込み

では次に、「numpy」を用いたcsvファイルの読み込みについて解説します。

「numpy」を用いたデータの読み込みには、「np.loadtxt()」というものを使います。

 

では実際のコードを見ながら使い方を確認してみましょう。

import numpy as np
data = np.loadtxt("input.csv", delimiter=",", dtype = "unicode")

上のように、たった2行でcsvファイルを読み込むことができます。標準ライブラリを使った時と比べ、かなり簡単に読み込めましたね。

 

ただし、注意点が2つありますので、そこを解説したいと思います。

注意点①
csvファイルを読み込むときは「delimiter=”,”」で区切り文字をコンマ(,)に指定する

csvファイルとは、コンマ区切りのファイルのことです。

一方、「loadtxt」のデフォルトの区切り文字はスペース( )なので、「delimiter=」を使って区切り文字をコンマ(,)に指定する必要があります。

 

注意点②
日本語を含む場合は「dtype = “unicode”」を用いて文字として読み込む

「loadtxt」のデフォルトのデータ型は「実数(float)」なので、文字を読み込むとエラーになってしまうためです。

ちなみに、数字は文字としても読み込めるため、文字を含む場合は「dtype = “unicode”」としておけば問題ありません。

 

以上の2点を抑えれば、「numpy」を用いてcsvファイルを読み込むことができるようになります。

Point
  • 「numpy」を用いたデータの読み込みには「np.loadtxt()」を使用
  • csvファイルを読み込むときは「delimiter=”,”」で区切り文字をコンマ(,)に指定
  • 日本語を含む場合は「dtype = “unicode”」を用いて文字として読み込む

 

 

3. pandasを用いたcsvの読み込み

最後に、「pandas」を用いたcsvファイルの読み込みについて解説します。

「pandas」を用いたデータの読み込みには、「pd.read_csv()」というものを使います。

では実際のコードを見ながら使い方を確認してみましょう。

import pandas as pd
df = pd.read_csv("input.csv", header=0, index_col=0, encoding="SHIFT-JIS")

こちらも、「numpy」同様2行でデータの読み込みが完了します。

 

「numpy」との大きな違いは、行や列に「header」や「index」といった名前を付けられる点です。

他の読み込み方では、国語や算数といった列名と、太郎や五郎といった行名も配列のデータとして読み込みますが、「pandas」では、それらを行列名として扱うことができます

そうすることで、後々データを取り出す際に行列名で指定できたりととても便利です。

 

そして、その指定をしているのが「header=」と「index_col=」です。

「header=」で、ヘッダー(列名)にする行を選びます。この時、ヘッダーより上の行は読み込まれなくなります。

「index_col=」では、インデックス(行名)にする列を選べます。こちらは、どの列をインデックスにしても他が読み込まれないことはありません。

 

また、日本語を読み込む際は「encoding=”SHIFT-JIS”」としてください。

ちなみに、「pandas」の詳しい使い方については下の記事で紹介していますのでそちらもご覧いただけると幸いです。

 

以上のことから、読み込むcsvファイルの配列に、行列名を含む場合は「pandas」を用いることをお勧めします。

Point
  • 「pandas」を用いたデータの読み込みには「pd.read_csv()」を使用
  • 「pandas」では行や列に「header」や「index」といった名前を付けられる
  • 「header=」でヘッダー(列名)にする行を指定
  • 「index_col=」でインデックス(行名)にする列を指定

 

4. まとめ

今回は、csvファイルの読み込みについて、標準ライブラリ、numpy、Pandasの3つの方法に分けて解説しました。

使い分けのポイントをまとめると以下のようになります。

  • 基本的には「numpy」か「pandas」を使用
  • 行列名を含むデータの場合は「pandas」を使用
  • それ以外の時は「numpy」を使用(pandasでも可)

csvファイルを読み込むことは多々あると思いますので、今回の内容が皆様の手助けになればと思います。

 

また、このサイトでは初心者の方向けに「Python初心者入門講座」という講座を作っていますので、気になった方はそちらもご覧いただけると幸いです。

スポンサーリンク




スポンサーリンク




-numpy, pandas, python
-

執筆者:


comment

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

関連記事

第2章 Pythonを使ってみよう

前回はPythonのダウンロードについて解説しました。この章では、さっそくPythonを使ってみましょう! 解説内容 Anaconda Promptを起動しよう Pythonで文字を出力しよう(pri …

第8章 Pythonの演習問題(解答編)

この章では、7章の「Pythonの演習問題を解いてみよう」で出題した演習の解答コードと、その解説を行っていこうと思います。 ※ただし、解答コードはあくまで一例であり、出力があっていればそのコードも正解 …

第3章 Pythonの変数を使ってみよう

この章では、第2章で少し話が出てきた「変数」について、実際に使ってみましょう。変数は、プログラミングを行う上で大切なポイントなので、しっかり学んでいきましょう。 解説内容 変数って何? 変数を使ってみ …

pyinstallerを使ったPythonのexe化(重くならない方法)

今回は、「pyinstaller」を使ってPythonをexe化して配布できるようにする方法について解説したいと思います。 Pythonをexe化することで、Pythonの環境を構築していない人でも使 …

第4章 Pythonのループ処理(for)を使ってみよう

この章では、いよいよ「ループ処理」を使っていこうと思います! 解説内容 ループ処理って何? ループ処理を使ってみよう ループ処理の範囲 rangeによるループ処理の応用 listを用いたループ処理   …

スポンサーリンク





初めまして、サイトを運営しているキユと申します。

このサイトでは、まったくの初心者がPythonを使って、単純作業や仕事を効率化できるようになるまでに必要なことをまとめています。