【Pandas】SeriesとDataFrameの使い方

 

この記事では、PandasのSeriesDataFrameの使い方についてご紹介します。

 

[toc]

Series(一次元データ)

 

pandasで一次元データを扱うには、Seriesを使います。

 

Seriesの作成

 

import pandas as pd
ser = pd.Series([1,2,3],index=['a','b','c'])
ser

 

インデックスと言うラベル(a,b,c)にデータ(1,2,3)が入っています。

 

ラベルを指定してデータを取り出す(loc)

 

ラベルaからcまでのデータを取り出すにはlocを使って、以下のようにします。

ser.loc['a':'c']

 

整数で指定してデータを取り出す(iloc)

 

ラベルで指定せずに、データの位置を整数で指定して取り出すこともできます。ilocを使います。

 

ser.iloc[0:2]

 

ilocの場合は、リストのルールと同じで、始点は含まれますが終点は含まれません。上記の例だと、a,bの行が出力されます。

 

DataFrame(二次元データ)

 

二次元のデータを扱うときは、DataFrameを使用します。

DataFrameを作成する

 

df = pd.DataFrame(
[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],index=['r1','r2','r3','r4'],columns=['c1','c2','c3','c4'])
df

 

行をラベルで指定する(loc)

 

r2行を全部取り出すには以下の通り。

df.loc['r2',:]

行と列をラベルで指定する(loc)

 

行と列、両方指定するには以下のようにします。

df.loc['r1':'r3','c1':'c2']

行と列を整数で指定する(iloc)

 

整数を指定して同じデータを取り出す場合は、以下のようにします。終点を含まないことに注意してください。

df.iloc[0:3,0:2]

 

演習問題

 

では、ここで1つ問題をやってみましょう。

 

演習問題.  c4列の値が5以上13以下の行を取り出してください。

 

r2,r3だけ出力すれば良いから、`df[‘r2′:’r3’,:]`と書くのはダメです。

c4列を取り出して、値の比較をしてください。

考え方としては、

  1. `df[c4]`でc4列の値を取得する。
  2. カッコアンドを使って条件を定義する。
  3. (c4が5以上) & (c4が13以下)

 

答えは以下の通り。

df.loc[(df['c4'] >= 5) & (df['c4'] <= 13)]

 

おわり。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog