この記事では、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講座レビューリスト