Pandasの基礎的なことをまとめていきます。
Pandasの概要
PandasはNumpyを基盤にシリーズ(Series)とデータフレーム(DataFrame)というデータ型を提供しています。
importするときは以下のように書くことが多いです。
import pandas as pd
Seriesとは
Seriesは1次元データです。
Seriesオブジェクトを作るには、Seriesを使います。
import pandas as pd ser = pd.Series([10, 20, 30, 40]) ser
DataFrameとは
DataFrameは2次元のデータです。
DataFrameオブジェクトを作るには、DataFrameを使います。
import pandas as pd df = pd.DataFrame([[10, "a", True], [20, "b", False], [30, "c", False], [40, "d", True]]) df
headとtail
headメソッドを使用すると、DataFrameの先頭の5行のみを出力します。
import numpy as np import pandas as pd df = pd.DataFrame(np.arange(100).reshape(25, -1)) df.head()
tailメソッドを使用すると、DataFrameの末尾の5行のみを出力します。
コードは省略
DataFrameのサイズ
DataFrameのサイズを知るには、shape属性を使います。
コード省略
インデックス名(行の名前)、カラム名(列の名前)
DataFrameには行の名前、列の名前を指定できます。
import numpy as np import pandas as pd df = pd.DataFrame(np.arange(6).reshape(3, 2)) df.index = ["01", "02", "03"] df.columns = ["A", "B"] df
また、DataFrame作成時にインデックス名とカラム名を設定できます。
import numpy as np import pandas as pd df = pd.DataFrame(np.arange(6).reshape(3, 2), index = ["01", "02", "03"], columns = ["A", "B"]) df
辞書(dict)形式でDataFrameを作る
import numpy as np import pandas as pd df = pd.DataFrame({"A列": [0, 2, 4], "B列": [1, 3, 5]}) df
データの抽出
DataFrameを作ります。
import numpy as np import pandas as pd df = pd.DataFrame(np.arange(12).reshape(4, 3), columns=["A", "B", "C"], index=["1行目", "2行目", "3行目", "4行目"]) df
カラム名を直接指定して抽出する方法を見ていきます。
df["A"]
次に複数のカラムを取得します。
df[["A", "B"]]
次にインデックスを指定してデータを抽出します。
df[:2]
locとiloc
これら2つのメソッドを使った抽出方法の方が、角カッコより明示的です。
import numpy as np import pandas as pd df = pd.DataFrame(np.arange(12).reshape(4, 3), columns=["A", "B", "C"], index=["1行目", "2行目", "3行目", "4行目"]) df.loc[:, :]
最初にlocメソッドを使って、AカラムのみをSeriesとして抽出します。
df.loc[:, "A"]
複数のカラムをlocメソッド使って抽出します。
df.loc[:, ["A", "B"]]
次にインデックス方向の抽出を見ていきます。
df.loc["1行目", :]
複数のインデックス名を指定してみます。
df.loc[["1行目", "3行目"], :]
インデックス名とカラム名の両方を指定してみます。
df.loc[["1行目"], ["A", "C"]]
ilocではインデックス番号、カラム番号を指定します。
以下の例では、整数の4が出力されます。
df.iloc[1, 1]
インデックスを範囲で、カラムを位置で指定してみます。
Seriesが出力されます。
df.iloc[1:, 1]
インデックスもカラムも範囲で指定します。
DataFrameが出力されます。
df.iloc[1:, :2]
データ読み込み:CSVファイル
import pandas as pd df = pd.read_csv("/content/drive/MyDrive/Python/Pythonによるデータ分析の教科書/data/201704health.csv", encoding="utf-8") df
データ読み込み:Excelファイル
import pandas as pd df = pd.read_excel("/content/drive/MyDrive/Python/Pythonによるデータ分析の教科書/data/201704health.xlsx") df
スクレピング
日本語版Wikipediaの「トップレベルドメイン一覧」から「国別コードトップレベルドメイン」の表を抜き出します。
import pandas as pd url = "https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%AC%E3%83%99%E3%83%AB%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E4%B8%80%E8%A6%A7" tables = pd.read_html(url) len(tables)
欲しい表はインデックス番号4と知っている(事前に調べておいた)ので、以下のように抜き出します。
df = tables[4]
df
データ書き込み:CSVファイル
test