Python

pandasとは?

By 2021年4月29日No Comments

この記事では、Pythonの外部ライブラリであるpandasとは何か、pandasを使って何ができるのかを解説します。

Pythonでデータ分析や機械学習を行うには必須のライブラリなので、ぜひこの記事を参考に、pandasの使い方を覚えましょう。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト

pandasとは何か

pandasはPythonの外部ライブラリであるNumpy上に構築されたパッケージであり、DataFrameという型において効率的にプログラムを組むことができるライブラリです。

「Numpyを使えばいいんじゃないの?」と思うかもしれませんが、Numpyでは数値計算においてよく見られるきれいなデータに対して、機能を提供しています。これらのデータは非常にうまく、高速に機能するものの、世界中にあふれる様々な形式のデータを分析するために必要となる柔軟なデータ操作、例えば、データのラベル付けや抜け落ちたデータの補完などを行う際には、処理できません。

pandasを使うと、データの統計量を表示したり、グラフ化するなど、データ分析(データサイエンス)や機械学習で必要となる作業を簡単に行うことができるようになります。

pandasの特徴はDataFrameという多機能な「表」にあります。DataFrameにはデータの平均値や行数などの概要的な特徴を把握する機能や、並べ替えや列名の変更などのデータを整形する機能があります

中でも、pandasはExcelによって作られるファイルであるcsvファイルの扱いに長けています。

例えば、csvファイルの読み取り、列や行の削除、欠陥があるデータの補完、特定の範囲の値の抽出などを行うことができます。Excelでできることはほとんどができ、pandasができるとこれらの日々の業務を効率化することができるようになります。

pandasを使うには

pandasは外部ライブラリなので、使用するにはインストールが必要になります。Numpyの記事でも取り上げましたが、インストールにはAnacondaやminicondaがおすすめです。

Anacondaのインストール: https://www.anaconda.com/products/individual

Minicondaのインストール: https://docs.conda.io/en/latest/miniconda.html

pandasの基礎

pandasでは行と列が単純に整数で決まるのではなく、ラベル(データの名前)で識別でき、Numpyにおける配列の自由度を上げたものと考えることができます。pandasでは基本的なデータ構造の上に便利なツールや機能を提供していますが、ほとんどの場合で基礎的な構造の理解が必要となります。

pandasで扱うデータ構造にはSeriesとDataFrameの2つがあります。まずはこの2つのデータ構造を理解して、基礎を固めましょう。

ライブラリのインポート

まずpandasは外部ライブラリなので、Numpyと同じようにインポートをします。このとき、Numpyも一緒にインポートしておきましょう。pandasはプログラムにおいて基本的にpdと略されます。

import numpy as np  # asによってライブラリを好きな名前で使うことができます。
import pandas as pd

Series

Seriesは一列からなるインデクス(データの名前)付きのデータです。PythonにおけるリストのようなものにインデクスがくっついているのがSeriesのイメージです。

次のようにリストまたは配列から作成できます。

data = pd.Series([10, 20, 30, 40])
print(data)
# 0    10
# 1    20
# 2    30
# 3    40
# dtype: int64

このようにインデクスと配列、データ型が出力されます。

Numpyと同じように、[ ]を使ってデータにアクセスできます。

print(data[1])
# 20
print(data[1:3])
# 1    20
# 2    30
# dtype: int64

インデクスは整数である必要はなく、好きな型で構成できます。ここでは文字列をインデクスとして使用します。

data = pd.Series([10, 20, 30, 40], index=["a", "b", "c", "d"])
print(data)
# a    10
# b    20
# c    30
# d    40
# dtype: int64

print(data["b"])
# 20

SeriesはPython辞書と同じように使うこともできます。Numpyのデータ構造を使ってpandasの型が作られているので、Python辞書よりも効率的です。

Python標準の辞書を作り、pandasのSeries型に変換してみましょう。

math_test_dict = {"Tanaka": 80, "Suzuki": 60, "Sato": 90, "Yamada": 40}
math_test =pd.Series(math_test_dict)  # Series型に変換
print(math_test)
# Tanaka    80
# Suzuki    60
# Sato      90
# Yamada    40
# dtype: int64

DataFrame

次はDataFrameです。Seriesでは列だけしかない一次元配列でしたが、DataFrameは行インデクスと列名を持つ二次元配列になります。

前の節で使った数学テストの結果に加えて、英語のテスト結果を作りましょう。

english_test_dict = {"Tanaka": 70, "Suzuki": 60, "Sato": 80, "Yamada": 50}
english_test = pd.Series(english_test_dict)
print(english_test)
# Tanaka    70
# Suzuki    60
# Sato      80
# Yamada    50
# dtype: int64

辞書を使ってこの2つを合わせます。

test = pd.DataFrame({"math": math, "english":english})
print(test)
#         math  english
# Tanaka    80       70
# Suzuki    60       60
# Sato      90       80
# Yamada    40       50

このようにしてSeries型の辞書からDataFrameを作ることができました。他にもNumpy配列から直接DataFrameを作ることもできます。この際には引数に列名とインデクスを加えます。

data = pd.DataFrame(np.array([[80, 70], [60, 60], [90, 80], [40, 50]]), columns=["math", "english"], index=["Tanaka", "Suzuki", "Sato", "Yamada"])
print(data)#         math  english
# Tanaka    80       70
# Suzuki    60       60
# Sato      90       80
# Yamada    40       50

まとめ

今回はpandasとは何かについて、pandas固有のデータ型であるSeriesとDataFrameの説明とともに解説しました。pandasはとても便利なライブラリですが、固有のデータ型を持ち、扱いが少し複雑なので今回の基本的なデータ型の使い方をまずは押さえておきましょう。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL