Pandas入門
Pythonでデータ分析で利用されるPandasについて基本中の基本をまとめてみました。
目次
準備
pandasをインポートします。
またグラフを描くためmatplotlibもインポートします。
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
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])
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)
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()
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)
print(result)
7日移動平均を出力します。
result_mean=result.rolling("7D").mean()
print(result_mean)
print(result_mean)
CSV出力
CSVで出力します。
result_mean.to_csv("7d.csv")
グラフ
Pandasでは簡単なグラフを複雑な設定なしで描画できます。
result_mean.plot()
plt.show()
plt.show()
JSON
JSONファイルを読み込むことができます。
fn_json = "xxxxx.json"
df=pd.read_json(fn_json)
df=pd.read_json(fn_json)
ファイル名をpandas.pyにするとエラーになります。
その他
見出しを絞ることができます。角括弧は二重にします。
df = df[["pref", "name"]]
HTMLのテーブルに出力することができます。
import pandas as pd
filename = "test.csv"
df = pd.read_csv(filename, sep=",")
print(df)
df.to_html("table.htm", index = False)
filename = "test.csv"
df = pd.read_csv(filename, sep=",")
print(df)
df.to_html("table.htm", index = False)
[ 2021年2月8日 | カテゴリー: Python, デジタル | タグ: Pands , 入門 ]
« ハイパーリンクがあるセルに網かけをするマクロ | クイキシオをウェブ上で再現 »
コメントを残す