超初心者向けPython入門講座

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

pandas python

Pandasの基本(dataframe作成、データ抽出、csv読み込み等)

投稿日:2020-07-19 更新日:

今回は、Pyhonでデータを扱う際に使えるととても便利な「Pandas」について解説したいと思います。

また、データを扱う際に使用する代表的なライブラリとして「numpy」がありますが、2つのライブラリの違いと使い分けについても解説します。

「numpy」の使い方については、「numpyの使い方とlistとの違いを比較」で解説していますので、そちらをご覧ください。

解説内容

 

 

1. Pandasって何?(numpyと比較)

「Pandas」とは、Pythonでデータを扱うためのライブラリで、データを表形式で扱うことができます。

データを扱うライブラリというと、代表的なものに「numpy」がありますが、「numpy」との違いは下記のようなものです。

pandasとnumpyの違い
  • numpyは全ての要素が同じ型でなければならないがpandasでは様々な型を使用可能
  • pandasではデータに欠損があった場合でも読み込み可能

 

上記の違いだけを見ると、「pandas」の方が優れているように思えますが、numpy」は計算に特化しており、計算速度は圧倒的に「numpy」の方が速いです。

そのため、下記のように使い分けることをお勧めします。

pandasとnumpyの使い分け
  • 要素ごとに形式が違ったり欠測のあるデータの整理にはpandasを使用
  • 数値のみの配列を扱う、または計算を行う場合はnumpyを使用

 

では、次の章からは実際にコードを動かしながら「pandas」の基本的な使い方について解説していきます。

 

2. Pandasの基本的な使い方(dataframeの作成)

「pandas」ではデータを表形式で扱うと説明しましたが、「pandas」で作成するこの表形式のデータのことをdataframe(データフレーム)と呼びます。

この「dataframe」は、「pandas.DataFrame(配列)」という形式で作成できます。

このとき、DataFrameの「D」と「F」は大文字でなければエラーになりますので、注意してください。

 

では、実際にdataframeを作成してみましょう。

import pandas as pd
#list配列の作成
data = [[80,75,90,70,95],[95,80,75,90,65]]
#dataframe作成
df = pd.DataFrame(data)

上のコードを実行すると、「df」というdataframeが作成されます。作成されたdataframeは下記のような形ですね。

8075907095
9580759065

※ちなみに、今回は読み込ませる配列をlistにしましたが、numpyなどの配列でも読み込み可能です。

 

さて、ここまでは普通の配列と変わりませんが、「pandas」ではこの行や列に名前を付けることができます。

では、実際に名前を付けてみましょう。先ほどのコードに続けて、下のコードを実行してください。

#列名の指定
df.columns = ["国語", "算数", "理科", "社会", "英語"]
#行名の指定(index)
df.index = ["太郎", "花子"]

すると、行と列にそれぞれ名前が付き、表形式のようになりましたね。

(上の配列はspyderの変数エクスプローラーで確認しています。詳しくは「Spyderの基本と便利な使い方」をご覧ください。)

 

ちなみに行列名は、下のようにdataframe作成時に「columns=」と「index=」で指定することもできます。

import pandas as pd
#list配列の作成
data = [[80,75,90,70,95],[95,80,75,90,65]]
#行列名の作成
col = ["国語", "算数", "理科", "社会", "英語"]
ind = ["太郎", "花子"]
#dataframe作成
df = pd.DataFrame(data, columns=col, index=ind)

 

また、indexはについては、「df.set_index()」を用いることで、データ作成後に列名を指定してindexにすることもできます。

import pandas as pd
#list配列の作成
data = [["太郎",80,75,90,70,95],["花子",95,80,75,90,65]]
#dataframe作成
df = pd.DataFrame(data)
#indexの列を指定
df = df.set_index(0)

 

ここまでくれば、あとはこの行や列ごとに平均を出したり、並べ替えたりといろいろな処理を行うことができます。

次の章では、まずこのdataframeからのデータ抽出方法について解説します。

Point
  • pandasのdataframeは「pd.DataFrame(配列)」という形式で作成
  • 「df.columns =[リスト]」で列名を指定
  • 「df.index =[リスト]」で行名(index)を指定
  • 行名(index)は「df.set_index()」を用いて後からindexにする列を指定可能

 

 

3. Pandas(dataframe)からのデータ抽出

ここでは、作成したdataframeからのデータの取り出し方法について解説します。

dataframeからデータを取りだす方法は、大きく分けて次の2つです。

また、上記2つの方法に共通し、「範囲を指定して抽出する方法」もあります。

では、この3つについてそれぞれ解説していきます。

 

3.1. 行列名を指定して抽出

まずは、行列名を指定したデータ抽出方法について解説します。

行列名を指定する場合、それぞれ下記のように指定します。

行名を指定df.loc[“行名”]
列名を指定df[“列名”]
行列両方を指定df.loc[“行名”, “列名”]

では、実際にコードを動かして確認してみましょう。

import pandas as pd
#list配列の作成
data = [[80,75,90,70,95],[95,80,75,90,65]]
#行列名の作成
col = ["国語", "算数", "理科", "社会", "英語"]
ind = ["太郎", "花子"]
#dataframe作成
df = pd.DataFrame(data, columns=col, index=ind)

#国語の点数を抜き出し
Japanese = df["国語"]
#太郎の点数を抜き出し
Taro = df.loc["太郎"]
#花子の算数の点数を抜き出し
Hanako = df.loc["花子", "算数"]

上のコードを実行すると、Japaneseには二人の国語の点数が、Taroには太郎の点数が、Hanakoには花子の算数の点数がそれぞれ入っていますね。

ちなみに、Dataframeから行や列を指定して抜き出した1次元の配列をSeries」と言います。

 

3.2. 行列の番号を指定して抽出

次に、行番号や列番号を指定してデータを抽出する方法について解説します。

行列の番号を指定する場合、基本的にはdf.iloc[行番号, 列番号]」という風に指定します。

ただし、行数や列数のみ指定したい場合は、指定しない方を「:」にすることで指定することができます。(「:」は、すべての範囲という意味になるため)

まとめると、下のように使い分けます。

行数を指定df.iloc[“行数”, :]
列数を指定df.iloc[:, “列数”]
行列数を指定df.iloc[“行数”, “列数”]

では、実際にコードで確認してみましょう。

import pandas as pd
#list配列の作成
data = [[80,75,90,70,95],[95,80,75,90,65]]
#行列名の作成
col = ["国語", "算数", "理科", "社会", "英語"]
ind = ["太郎", "花子"]
#dataframe作成
df = pd.DataFrame(data, columns=col, index=ind)

#国語の点数を抜き出し(列数指定)
Japanese = df.iloc[:, 0]
#太郎の点数を抜き出し(行数指定)
Taro = df.iloc[0, :]
#花子の算数の点数を抜き出し(行列数指定)
Hanako = df.iloc[1, 1]

これで、行列名を指定した場合と同じようにデータを抽出できましたね。

行列数の指定は、行列名がしっかり決まっていない時に使用することになります。

 

3.3. 範囲指定を指定したデータ抽出

最後に、範囲を指定する場合について解説し、データの抽出方法をまとめたいと思います。

範囲を指定する場合は、前項の方法で行列を指定する際に、「始まり:終わり」のようにして指定することができます。

では、具体例を確認してみましょう。(前項のdataframeを使用しています)

#花子の算数から社会の点数を抜き出し
Hanako2 = df.loc["花子", "算数":"社会"]
Hanako3 = df.iloc[1, 1:4]

上のように「始まり:終わり」とすることで、その範囲のデータを抜き出すことができます。(行列名でも行列数でも同様に処理できます。)

 

3.4. データ抽出のまとめ

ここまで解説したデータ抽出方法をまとめると以下のようになります。

行名を指定df.loc[“行名”]
列名を指定df[“列名”]
行列名を指定df.loc[“行名”, “列名”]
行数を指定df.iloc[“行数”, :]
列数を指定df.iloc[:, “列数”]
行列数を指定df.iloc[“行数”, “列数”]

範囲を指定
df.loc[“始行名”:”終行名”, “始列名”:”終列名”]
         or
df.iloc[“始行数”:”終行数”, “始列数”:”終列数”]
Point
  • 行列を名前で指定する場合は「df.loc[“行名”, “列名”]」
  • 行列を数字で指定する場合は「df.icol[“行数”, “列数”]」
  • 範囲を指定する場合は行列を「始まり:終わり」で指定

 

 

4. Pandasによるcsvの読み込み(read_csv)

最後に、pandasによるcsvの読み込みについて解説します。

pandasでcsvを読み込む場合には、「read_csv」を使用します。

では、実際にコードを動かしながら確認してみましょう。

今回は下のようなcsvファイル読み込んでみます。(ファイル名はcsv_data.csvです)

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

これで下のようにcsvデータを読み込むことができました。コードとしてはかなり簡単ですね。

 

上のコードでread_csvを使用した際のポイントは下の点です。

  • 「header=」でヘッダー(列名)の行を指定できる
  • 「index_col=」でindexの列を指定できる
  • 日本語を読み込む場合は「encoding=”SHIFT-JIS”」を使う

 

ちなみに、ヘッダーが無いデータを読み込む場合は下の2種類の方法があります。

  • header=Noneとすることで、ヘッダー無しのデータを読み込む
  • names=[リスト]とすることで、列名を指定して読み込む

また、index_colは指定しなければ読み込まないため、indexが無い場合は指定しなくて構いません。

 

このように、pandasではcsvのデータを簡単に表形式に読み込むことができます。

 

ちなみに、データに欠損(空白など)がある場合は「nan」に変換されます。また、na_valuesを用いることで、欠損値の指定をすることもできます。

上と同じ方法で読み込むと、空白のみが欠損となり「nan」に変換される。

 

下のように、「na_values」で「欠席」も欠損値に指定することができる。

import pandas as pd
df = pd.read_csv("csv_data.csv", header=0, index_col=0,na_values="欠席", encoding="SHIFT-JIS")
Point
  • pandasでcsvを読み込む場合は「read_csv」を使用
  • 「header=」でヘッダー(列名)の行を指定
  • 「index_col=」でindexの列を指定
  • 「header=None」とすることでヘッダー無しのデータの読み込み
  • 「names=[リスト]」とすることで列名を指定して読み込み
  • 「na_values=」で欠損値を指定

 

 

5. おわりに

今回は、pythonでデータを扱う際に使えると便利な「pandas」について解説しました。

最初は少し難しく感じるかもしれませんが、「pandas」は使えるようになるとかなり便利なので、ぜひ使い方をマスターしてください。

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

スポンサーリンク




スポンサーリンク




-pandas, python
-,

執筆者:


comment

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

関連記事

第9章 Pythonの入力(input)を使ってみよう

この章では、入力文(input)を学んでいきましょう!入力文とは、プログラムを実行した後に、あとから好きな文字や数字をプログラムに反映させる方法です。 解説内容 inputの使い方 inputを使って …

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

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

第2章 Pythonを使ってみよう

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

仮想環境でのSpyder利用法と実行場所

Pythonの仮想環境で「Spyder」を使うには、注意点があります。ここでは、仮想環境でのSpyderの使い方について解説したいと思います。 また、あわせて仮想環境を任意の場所で起動する方法について …

第13章 Pythonでテキストファイル・csvファイルへの書き出しをしてみよう(write)

この章では、「テキストファイル」と「csvファイル」への書き込みについて解説したいと思います。Pythonで行った処理を保存する方法になりますので、しっかりと使えるようになりましょう! 解説内容 テキ …

スポンサーリンク





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

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