Pandas入門

Pocket

Pythonでデータ分析で利用されるPandasについて基本中の基本をまとめてみました。


目次


準備

pandasをインポートします。
またグラフを描くためmatplotlibもインポートします。

import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

読み込み

CSVを読み込みます。
左端の列(0列目)が「2021/1/15」という文字列なので日付型に変換します。

filename = "sample.csv"
df = pd.read_csv(filename, sep=",", parse_dates=[0])

見出し

元の見出しは「日付,都道府県名,各地の感染者数_1日ごとの発表数,各地の死者数_1日ごとの発表数」で長いので、短い見出しに変えます。

df.columns = ["date", "pref", "infection", "death"]

ヘッダがないCSVの場合は見出しをつけることができます。

df = pd.read_csv(filename, header=None, names=["id", "datetime", "title", "status", "type"])

見出し(列)を絞ることができます。

df = df[["id", "title"]]

出力

# 先頭部分と末尾部分が出力されます。
print(df)

# 表示する行数を指定できます。先頭部分と末尾部分を合わせて何行かを指定します。
pd.set_option('display.max_rows', 10)

# データフレームの先頭部分だけを出力します。引数に数値を入れると行数を指定できます。末尾はtail()です。
print(df.head())

# データフレームの形を出力します。
print(df.shape)

# データフレームのインデックスの状況を出力します。
print(df.index)

# データフレームの見出しを出力します。
print(df.columns)

# データフレームの見出しの詳細を出力します。
print(df.dtypes)

ソート

ソートします。デフォルトは昇順で、ascending=Falseとすると降順になります。

print(df.sort_values("death", ascending=False))

抽出

条件に合うものを抽出します。

print(df[(df["date"]=="2021-02-01") & (df["pref"]=="東京都")])
# キーワードを含む行を抽出します。
df=df[df["カラム"].str.contains("キーワード")]

# 「~」を使うとキーワードを含まない行を抽出します。
df=df[~df["カラム"].str.contains("キーワード")]

# 漢字を含む行を抽出します。正規表現が使えます。
df=df[df["カラム"].str.contains("[一-龠]")]

# 特定のカラムに欠損値を含む行を抽出します。
df=df[df["カラム"].isnull()]

# 特定のカラムに欠損値を含まない行を抽出します。
df=df[df["代表作"].notnull()]

# 欠損値を含む行を削除します。
df=df.dropna()

集計

日付毎に集計します。見出しを指定しないと計算できるものは全て集計します。

print(df.groupby(['date']).sum())

全国の死者数を日付毎に集計します。見出しを指定します。

result=df.groupby(['date'])["death"].sum()
print(result)

7日移動平均を出力します。

result_mean=result.rolling("7D").mean()
print(result_mean)

CSV出力

CSVで出力します。

result_mean.to_csv("7d.csv")

グラフ

Pandasでは簡単なグラフを複雑な設定なしで描画できます。

result_mean.plot()
plt.show()

JSON

JSONファイルを読み込むことができます。

fn_json = "xxxxx.json"
df=pd.read_json(fn_json)

ファイル名をpandas.pyにするとエラーになります。

その他

見出しを絞ることができます。角括弧は二重にします。

df = df[["pref", "name"]]

[ 2021年2月8日 | カテゴリー: Python, デジタル | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報