4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

データ抽出する際に利用するPandasのメソッドまとめ【Python】

Last updated at Posted at 2020-05-06

はじめに

Pythonでデータを取得する際、
Pandasのライブラリを頻繁に利用します。

ところが、データ分析の初心者は、

  • どのようにデータを取得すればよいか、イメージできない
  • どのメソッドを利用すればよいか不明

という状況にわりとなります。

この記事では、
データを抽出時に頻出のメソッドをまとめてみました。

※ 主にこれからPythonを学習される方向けの記事となっています。
※ 細かい点については、公式ドキュメントにて、ご確認ください。

環境

  • Python 3.7.6
  • Pandas 1.0.0

Pandasとは?

データ分析を効率的に行うため、Pythonのライブラリの一つです。

実装

必要なデータの読み込み

今回は、seabornで標準利用が可能な「iris」のデータセットを利用します。

import seaborn as sns
iris = sns.load_dataset('iris')
iris.head()

スクリーンショット 2020-05-06 11.44.08.png

行列を指定してデータを抽出する

行番号や列番号を指定することで、自由にデータを取得できます。

行番号を指定したデータ抽出

# 3行目のデータ
iris.iloc[3]

image.png

ilocでは、行番号を指定することでデータを取得できます。

# 0〜2行目のデータ
iris.iloc[:3]

image.png

# 3行目 1列目の値
iris.iloc[3, 0]

image.png

# 0〜2行目、2列目〜3列目のデータ
iris.iloc[:3, 2:4]

image.png

行番号、列名を指定し、データを抽出する

iris.loc[[2,4,6],['petal_length', 'petal_width']]

image.png

locでは、行インデックスを指摘することで、データを取得できます。

特定条件のデータを抽出する

条件を指定して、データを抽出する方法は、以下のとおりです。

完全一致条件によるデータ抽出

speciesの項目について、内容が、setosaと一致する件数を取得します。

len(iris[iris['species'] == 'setosa'])

複数条件を使ったデータ抽出

データ抽出する際、複数条件で絞りたい場合は、条件を付与することで実現できます。

# and条件は()&()で、or条件は()|()
iris[(iris['species'] == 'setosa') & (iris['petal_width'] > 0.5)]

部分一致条件によるデータ抽出

条件は、完全一致だけでなく、部分一致した内容を抽出したいケースもあり、このような場合は、以下の内容で実現できます。

# 部分一致検索(seと部分一致するもののみ抽出する)
iris[iris.species.str.contains('se')]

データを集計する

集計時は、DataFrameGroupBy型に変換した上で、加工します。

iris_group = iris.groupby('species')
type(iris_group)

出力結果は、以下のとおりです。

pandas.core.groupby.generic.DataFrameGroupBy

平均値

iris_group.mean()

出力イメージは、以下のとおりです。

スクリーンショット 2020-05-06 11.53.53.png

他にも、最小値、最大値、標準偏差なども算出できます。

複数条件による、集計も可能です。

iris_group2 = iris.groupby(['species', 'petal_width'])
iris_group2.mean()

スクリーンショット 2020-05-06 11.55.44.png

データを結合する

同じカラム構成のデータを結合する

同じカラム構成となっている、データを結合する場合、appendメソッド、または、concatメソッドを利用します。

今回は、Panadasメソッドを中心に説明しているので、concatメソッドで結合します。

import pandas as pd
iris_master = pd.DataFrame([['0', 'setosa'], ['1', 'versicolor'], ['2', 'virginica']], columns=['id', 'name'])
iris_master

image.png

add_iris = pd.DataFrame([['3', 'hoge']], columns=['id', 'name'])
add_iris

image.png

pd.concat([iris_master, add_iris])

image.png

異なるカラム構成のデータを結合する

データのカラム構成が異なる、複数のデータを結合する場合、mergeメソッドを利用します。
(他にもjoinメソッドでも結合は可能ですが、キーにしたい列をindexにする必要があり、少し面倒なので、まずはmergeメソッドが利用できるれば、問題ないかと考えています。)

結合する際は、結合するためのキー項目を指定することで、
同じ項目同士で行を結合します。

pd.merge(iris_group2.mean(), iris_master, left_on='species', right_on='name')

スクリーンショット 2020-05-06 12.04.02.png

最後に

今後、以下の内容について充実させる予定です。

  • データの読み込み(read_csv)

参考情報

上記内容は、以下のサイトをベースにまとめました。

こちらでは、より細かく説明されているので、不明な点があれば、ぜひ参考にしてください。

4
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?