Pythonライブラリ講座

Pandasとは?SeriesやDataFrameを使いこなそう!

前のページ|次のページ

9章ではデータサイエンスにおいて必須ともいえるライブラリである『Pandas』の概要と『Series/DataFrame』について解説します。

また、データの概要を把握するのに役立つ『head/tailメソッド』と『describeメソッド』を紹介します。

ぜひ最後まで読んでいってください!

本連載講座【Python ライブラリ編】では、データサイエンスに必要なPythonライブラリやその使い方を基礎から学ぶことができます。

NumPyPandasMatplotlibScipySeabornについて、初学者の方にも分かりやすいよう丁寧に解説しています。

さらに、学習した内容を定着させられるように各章演習問題を用意しています。

・Pythonでデータ分析ができるようになりたい

・Pythonの基礎事項は一通り学んだので、さらに深く学びたい

このように考えている方はTech Teacherが運営する【Python ライブラリ編】で、Pythonによるデータサイエンスの学習をすることをお勧めします!

なお、『Pythonについて全く知らない』・『Pythonの基礎事項がまだ分かっていない』という方は、まずコチラの【Python 基礎編】で基礎を一通り学習してからライブラリ編に取り掛かりましょう!

<ライブラリ編 目次>

<ライブラリの基礎>
1章:ライブラリとは

<NumPy>
2章:NumPyの概要と配列(ndarray)
3章:統計量や次元の取得/ソート
4章:配列のインデックス
5章:numpy.whereによる条件制御
6章:配列の結合/分割
7章:乱数

<SciPy>
8章:SciPyの概要と基本操作

<Pandas>
9章:SeriesDataFrame/統計量の取得
10章:データの読み込み/書き込み
11章:データの取り出し/追加
12章:データのソート
13章:データの結合
14章:階層型インデックス
15章:groupbyによる集計
16章:マッピング処理
17章:欠損値の扱い

<Matplotlib>
18章:Matplotlibの概要
19章:pyplotインターフェース
20章:オブジェクト指向インターフェース

<Seaborn>
21章:Seabornの概要と基本操作


本ブログを運営しているTech Teacherは、
プログラミング家庭教師サービスを運営しています。
完全マンツーマン・フルオーダーメイド
あなたが必要な指導を提供します。

Pandasとは

Pandas ロゴ

Pandas』は、データの分析や前処理をするのに便利なPythonの外部ライブラリです。

データの加工処理を簡単に行うことができるため、データサイエンス機械学習の分野で頻繁に用いられています。

Pandasの特徴として、『Series』と呼ばれる一次元配列のデータ構造と『DataFrame』と呼ばれる表形式のデータ構造があります。

これらの構造にデータを格納することで、データの集計・抽出・結合などの処理を簡単に行うことができるようになります。

本記事ではSeries/DataFrameの宣言方法およびデータの概要を把握するのに役立つメソッドを紹介します。

Pandasのインポート

それでは早速、Pandasをインポートして使える状態にしていきましょう。

以下のコードを実行して、Pandasをpdという名前でインポートしてください。

import pandas as pd

なお、ライブラリの概要やインポートの方法について詳しく知りたい方は、こちらの記事を参照してください。

Seriesの宣言

Series』は一次元の配列のようなデータ構造で、NumPyのndarrayやPythonのリスト・辞書などから作成することができます。

リスト/配列から作る方法

まずはリストや配列からSeriesを宣言してみましょう。

pd.Series(配列またはリスト, index=(インデックスのリスト))

と書くことでSeriesを作成することができます。

第二引数のインデックスは省略することもできます。

以下の例では、数値が格納されたリストからSeriesを作成しています。

data_s = pd.Series([0,100,200,300,400,500])
print(data_s)
0      0
1    100
2    200
3    300
4    400
5    500
dtype: int64

右側の数値がデータで、左側の0から始まる数字はSeriesのインデックスです。

インデックスを省略した場合、0から順にインデックスが付けられます。

リストやndarrayと同様に、インデックスを指定することで任意のデータを取り出すことができます。

print(data_s[3])
300

また、インデックスを指定した場合は以下のようになります。

data_s_idx = pd.Series([100, 150, 500, 100], index=['apple', 'banana', 'grape', 'orange'])
print(data_s_idx)
apple     100
banana    150
grape     500
orange    100
dtype: int64

辞書と同じように、『values』プロパティと『index』プロパティにより、Seriesの要素とインデックスをそれぞれ取得することができます。

print(data_s_idx.values)
print(data_s_idx.index)
[100 150 500 100]
Index(['apple', 'banana', 'grape', 'orange'], dtype='object')

辞書から作る方法

続いて辞書からSeriesを作成する方法を説明します。

pd.Series(辞書)

とすることで、辞書のキーインデックス要素としたSeriesを作成することができます。

#辞書の定義
dic = {'apple':100, 'banana':150, 'grape':500, 'orange':100}

data_s_dic = pd.Series(dic)
print(data_s_dic)
apple     100
banana    150
grape     500
orange    100
dtype: int64

なお、辞書については以下の記事で詳しく解説しています。

定義の方法からメソッド一覧まで分かりやすく説明していますので、ぜひ参照してください。

DataFrameの宣言

DataFrame』は表形式のデータ構造で、Seriesと同様にNumPyのndarrayやPythonのリスト・辞書などから作成することができます。

リスト/配列から作る方法

リストからDataFrameを作成する際は、以下のように書きます。

pd.Series(2次元リスト, columns=(列名のリスト))

第一引数にデータとして2次元配列を渡し、引数columns各列の名前をリストとして渡します。

まずはリストからDataFrameを作成する例を見てみましょう。

#データ(2次元リスト)
data = [
    ['John', 28, 'Engineer'],
    ['Alice', 32, 'Doctor'],
    ['Bob', 45, 'Teacher']
]

# DataFrameを作成
df = pd.DataFrame(data, columns=['Name', 'Age', 'Occupation'])

df
DataFrame1

ndarrayを使用しても同じように作成することができます。余裕のある方は試してみると良いでしょう。

Jupyter Notebookなどの環境ではDataFrameが格納されている変数名を書くと、DataFrameの内容を綺麗に表示してくれます。
以降はprint()関数を使わずにDataFrameを上記のような形式で表示していきます。

辞書から作る方法

値の部分がリストになっている辞書を引数として渡すことでもDataFrameを作成することができます。

#データを辞書で定義
dic = {
    'Name':['John','Alice','Bob'],
    'Age':[28,32,45],
    'Bob':['Engineer','Doctor','Teacher']
}

df = pd.DataFrame(dic)
df

辞書を用いてDataFrameを作成する際は、キー列名要素(データ)に対応します。

また、Seriesと同様に引数indexにリストを渡すことで、インデックスを自分で設定することができます。

#データを辞書で定義
dic = {
    'Name':['John','Alice','Bob'],
    'Age':[28,32,45],
    'Bob':['Engineer','Doctor','Teacher']
}

df = pd.DataFrame(dic, index=['a','b','c'])
df
DataFrame2

head/tailメソッドでデータの先頭/末尾を表示

headメソッド

head』メソッドを用いるとDataFrameの先頭の5行を表示することができます。

まずは元となるデータをDataFrameで作成します。

#データ
data = {
    'Name': ['John', 'Alice', 'Bob', 'Emily', 'Michael', 'Samantha', 'David'],
    'Age': [28, 32, 45, 29, 35, 40, 38],
    'Occupation': ['Engineer', 'Doctor', 'Teacher', 'Artist', 'Lawyer', 'Entrepreneur', 'Architect']
}

# DataFramew作成
df = pd.DataFrame(data)
df
DataFrame3

headメソッドを使用して上記のデータの先頭5行を表示してみます。

df.head()
DataFrame

データ数が膨大で、データの先頭だけ表示して概要を確認したいときなどに非常に便利なメソッドです。

tailメソッド

tail』メソッドはDataFrameの末尾の5行を表示するメソッドです。

headメソッドの説明で使用したDataFrameの末尾5行を表示してみましょう。

df.tail()
DataFrame5

describeメソッドで統計量の一覧を表示

describe』メソッドを用いると、DataFrameの各列の統計量を一覧として表示することができます。

以下の例を見てみましょう。

#データ
data = {
    'Name': ['John', 'Alice', 'Bob', 'Emily', 'Michael', 'Samantha', 'David'],
    'Age': [28, 32, 45, 29, 35, 40, 38],
    'Occupation': ['Engineer', 'Doctor', 'Teacher', 'Artist', 'Lawyer', 'Entrepreneur', 'Architect'],
    'Salary': [60000, 80000, 70000, 50000, 90000, 120000, 100000]
}

#DataFrameを作成
df = pd.DataFrame(data)
df
DataFrame6
#describeメソッドを使用して統計量を表示
df.describe()
DataFrame7

数値を要素として持つ列に対して、各種統計量が表示されているのが分かると思います。

なお、表示される統計量の名前と意味は以下の通りです。

統計量の名前意味
countデータの個数
mean平均値
std標準偏差
min最小値
25%第一四分位数
50%中央値
75%第三四分位数
max最大値

統計量の意味がよく分からない・忘れてしまったという方は、以下の記事で詳しく解説していますのでぜひ参照してください!

『Tech Teacher』3つの魅力

魅力1. オーダーメイドのカリキュラ

『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。

    魅力2. 担当教師によるマンツーマン指導

    Tech Teacherでは完全マンツーマン指導で目標達成までサポートします。
    東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
    そのため、理解できない箇所は何度も分かるまで説明を受けることができます。

    魅力3. 3,960円/30分で必要な分だけ受講

    Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。

    まとめ

    ・魅力1. 担当教師によるマンツーマン指導

    ・魅力2. オーダーメイドのカリキュラム

    ・魅力3. 3,960円/30分で必要な分だけ受講

    質問のみのお問い合わせも受け付けております。

    まとめ

    本記事ではPandasの基本であるSeries、DataFrameの宣言方法およびメソッドを紹介しました。

    次章以降でさらに詳しく解説していきますので、本講座でPandasによるデータ操作をマスターしていきましょう!

    次のページへ

    【Pandas】CSV・Excelファイルを読み書きする方法 前のページ|次のページ 10章ではPandasのDataFrameを用いた『CSV/Excelファイルへの書き込み』および『CS...