超初心者向けPython入門講座

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

numpy pandas python

Pandasとnumpyの違いや変換について(どっちを使えばいいの?)

投稿日:

今回は、Pyhonでデータを扱う際に使えるととても便利な「Pandas」について、同じくデータを扱う際に使用する代表的なライブラリである「numpy」と比較して解説したいと思います。

「Pandas」の基本については、「Pandasの基本的な使い方について」で解説していますので、そちらをご覧ください。

解説内容

 

1. Pandasとnumpyの違いについて

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

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

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

 

では、上記点についてそれぞれ解説していきます。

 

1.1. numpyとpandasのデータ形式について

下の配列をnumpyとpandasに読み込ませた場合、以下のようになります。

12345

numpyではすべての要素が同じ型でなければならないため、1行目の数字も文字として読み込まれます。

pandasでは様々な型が混在可能なので、1行目は整数、2行目は文字として読み込むことができます。

 

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

import numpy as np
import pandas as pd
#配列の作成
data = [[1,2,3,4,5],["あ","い","う","え","お"]]
#numpy形式での読み込み
ndata = np.array(data)
print(ndata[0,2], type(ndata[0,2]))
#pandas形式での読み込み
pdata = pd.DataFrame(data)
print(pdata.iloc[0,2], type(pdata.iloc[0,2]))

上のコードを実行すると、同じ「3」を出力した場合でも、numpyは文字(str)で出力され、pandasでは整数(int)で出力されていますね。

このように、pandasでは要素ごとに違う形式のデータを扱うことができます。

 

1.2. 欠損があるデータの読み込みについて

次に、データに欠損がある場合についてです。

下のような欠損(空白)のある「input.csv」というcsvデータを用意し、「numpy」と「pandas」でそれぞれ読み込んでみましょう。

 

では、まず「numpy」を用いたデータの読み込みです。

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

上のコードを実行すると、空白だった部分はそのまま空白として読み込まれます。

空白や文字を含む場合は、「dtype=”unicode”」と記述し、文字として読み込まないとエラーになります。

上記のように、numpyでも一応データを読み込むことができるのですが、欠損があると全体を文字として読み込む必要があり、後のデータ処理で邪魔になります。

 

では、次に「pandas」を用いて読み込んでみましょう。

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

上のコードを実行すると、欠損を「Nan」として読み込むことができます。

「Nan」としてデータを読んでおくと、後にデータの平均を取ったり合計を取ったりする際も、除外できたりと何かと便利です。

また、後の解説しますが、「Nan」としてデータを読み「numpy」へ変換することで、numpy配列でも欠損を扱うことができるようになります。

そして何より、他の値を数値として読み込むことができる点が「numpy」よりも優秀な点です。

 

このように、文字と数字が混じったデータであったり、欠損のあるデータを読み込む際は、「Pandas」を使うことで後のデータ処理を楽に行うことができます!

Point
  • numpyではすべての要素が同じ型の必要あり
  • pandasでは様々な型が混在可能
  • 空白や文字を含むデータを読み込む際は「Pandas」を使用する

 

 

2. Pandasとnumpyの変換

先ほど、文字や空白のあるデータを読み込む際は「Pandas」の使用をおすすめしましたが、データは「numpy」で扱いたい等あると思います。 

そこで次に、Pandasとnumpyを相互に変換する方法について解説します。

※「numpy」は計算に特化したライブラリであり、計算は「Pandas」より速いです。

 

2.1. Pansasをnumpyに変換する方法

まずは、「Pandas」から「numpy」への変換についてです。

「Pandas」から「numpy」への変換には、「to_numpy」というメソッドを使用します。では、実際に先ほどの「input.csv」を読み込んで変換してみましょう。

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

すると、下のような「data」というnumpy配列が出来たと思います。

ここで重要なのが、「nan」は文字ではなく実数(float64)として読み込まれていることです。

 

下のコードを実行し、「nan」が実数として読み込まれていることを確認しましょう。

print(data[1,1], type(data[1,1]))

つまり、欠損のあるデータは一度「Pandas」で読み込み、その後「numpy」へ変換することで、numpy配列として扱うことができるのです。

 

また、「Pandas」で読み込んだ際の、インデックスやヘッダーは除外されて変換されますので、そういったデータを扱う際も、この方法が良いと思います。

 

2.2. numpyをPandasに変換する方法

次に、numpyをPandasに変換する方法についてです。

この場合は、pandasの「DataFrame」を使用します。

「DataFrame」の作成方法や使い方については「Pandasの基本的な使い方について」で解説していますので、そちらもご覧ください。

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

import pandas as pd
import numpy as np
data = np.arange(12).reshape(3,4)
df = pd.DataFrame(data)

上のように、「pandas.DataFrame(配列)」とすることでnumpy配列からpandasの配列へ変換することができます。

 

使用頻度としては、「Pandas」から「numpy」への変換の方が高いと思いますので、しっかりと使えるようになりましょう。

Point
  • 「Pandas」から「numpy」への変換には「to_numpy」というメソッドを使用
  • 「to_numpy」では「nan」は文字ではなく実数(float64)として読み込み
  • 欠損のあるデータは一度「Pandas」で読み込みその後「numpy」へ変換する
  • 「numpy」を「Pandas」に変換するにはpandasの「DataFrame」を使用

 

 

3. まとめ

今回は、「Pandas」と「numpy」における違いや相互変換について解説しました。

「Pandas」や「numpy」を状況に応じてうまく使い分けることでデータ処理がとても楽になりますので、ぜひマスターしてもらいたいと思います。

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

スポンサーリンク




スポンサーリンク




-numpy, pandas, python
-

執筆者:


comment

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

関連記事

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

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

第14章 Pythonでフォルダを作成してみよう

この章では、ファイルに記入したフォルダ名を読み取り、複数のフォルダを一括で作成する方法について解説します。 解説内容 フォルダを作成してみよう ファイルからフォルダ名を読み取って作成   1.フォルダ …

Pythonでcsvファイルへの書き出し(list,numpy,pandas対応)

今回は、「csvファイル」へのデータの書き出しについて解説していこうと思います。csvファイルとは何か?については、本サイトの「Pythonでcsvファイルを読み込んでみよう」で解説しているので、そち …

Pythonで桁数やゼロ埋めを行う方法(format)

今回は、pythonで「format」を用いて、数字や文字の桁数をそろえたり、ゼロ埋めする方法について解説します。 解説内容 formatの基本的な使い方と桁数指定 ゼロ埋めの方法 文字列との組み合わ …

Pythonの仮想環境利用のすすめ(Anaconda環境)

Pythonは、便利に使おうとすればするだけ、ライブラリをたくさんインストールすることになると思います。 ただし、ライブラリを大量にインストールすると、ライブラリ同士が互いに干渉してエラーが生じたり、 …

スポンサーリンク





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

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