🗒️

Pandasをマスターしたい備忘録

に公開

初めに

pandasって使いこなせたらめっちゃかっこいいですよねわかる.ってことで講義で教授からもらった資料や個人的に大事だなって思ったところをまとめておきたいと思います.
ほかにも「これ大事だろ」ってことだったり「これちがくね?」って点があったら教えてください

目次

pandasとは

  • データ操作を効率的に行うPythonライブラリ.
  • pandasでできること
    • データの読み込み,整形,加工,結合,保存
    • データの検索,表計算,集計
    • データの可視化

pandasのデータ型

  • pandasには大きく分けて二つのデータ型がある.
    • DataFrame
      • 表形式データで,インデックス,カラムからなる.Excelみたいな感じ
    • Series
      • 1次元データで,インデックスからなる.listみたいな感じ

pandasのインポート

pandasは慣習的にpdとして読み込む

import pandas as pd

ファイルからデータの読み込み

csvファイルの読み込み

pd.read_csv("csvファイルパス",encoding="文字コード")

df = pd.read_csv("csvファイルパス":str,encoding="文字コード":str)
type(df)
#>DataFrame
  • csvファイルパスはそのまま
  • encodingのデフォルトはutf_8(国際標準).日本語ファイルや国勢調査などのオフィシャルのデータによくある.

Excelファイルの読み込み

pd.read_excel("Excelファイルのパス":str,"シートの名前":str)

df = pd.read_excel("Excelファイルのパス","シートの名前")

シートの名前はファイルの中に1シートしかないときいらない.

webサイトの票データの取得

pd.read_html(url:str,encoding:str)

df = pd.read_html("url",encoding)

DataFrameの表示

DataFrameの表示にはdisplay()が有効.print()でもいいけど見やすさがレベチ.

DataFrameの上位表示

DataFrameは基本たくさんのデータがあるので全部表示させると画面がごちゃごちゃする.
中身がどんな内容であるか確認したいときはhead()を使うといい

type(df) == DataFrame #True

display(df.head())
#冒頭5行の表示

display(df.head(3))
#冒頭3行の表示

ファイルへ出力

DataFrameをcsvファイルとして出力

dataFrame.to_csv("csvファイルパス",index=False,encoding="utf_8")

df.to_csv("csv.csv")
  • index:indexを出力するときはTrue,いらなければFalse

DataFrameをExcelファイルとして出力

Excelファイルとして出力する際は外部ライブラリopenpyxlのインストールが必要.
DataFrame.to_excel("Excelファイルパス",sheet_name="シート名",index,encoding)

DataFrame.to_excel("Excelファイルパス",sheet_name="シート名",index=False,encoding="utf_8")
  • 既存のExcelファイルにシートを追加して出力
import openpyxl

with pd.ExcelWriter("Excelファイルパス",engine="openpyxl",mode="a") as writer:
    DataFrame.to_excel(writer,sheet_name="シート名",index=False,encoding="utf_8")

データ構造の確認

行数と列数の確認

DataFrame.shape

display(df.head(3))
都道府県コード 都道府県名 元号 和暦(年) 西暦(年) 人口(総数) 人口(男) 人口(女)
0 1 北海道 大正 9 1920 2359183 1244322
1 2 青森県 大正 9 1920 756454 381293
2 3 岩手県 大正 9 1920 845540 421069
df.shape
#>(939,8)

#データの抽出

列の抽出

一列抽出

データフレーム["列名"]->Series型

df_col = df["人口(総数)"]
df_col
0 232453
1 75343
2 83123
... ...

複数列抽出

データフレーム[["列名1","列名2",...]]->DataFrame

df_cols = df[["人口(総数)", "人口(男)", "人口(女)"]]
df_cols
人口(総数) 人口(男) 人口(女)
0 232453 1244322 1114861
1 756454 381293 375161
2 845540 421069 424471
. ... ... ...

条件に合ったデータの抽出

pandasではDataFrameに演算子が使用できる.

TF = df["西暦(年)"] == 2000
TF
0 False
1 False
2 False
. ...

さらにTrueのみの抽出ができる

df_TF = df[TF]
df_TF
都道府県コード 都道府県名 元号 和暦(年) 西暦(年) 人口(総数) 人口(男) 人口(女)
751 1 北海道 12 2000 123213 12321 12321 53241

これよりこんな書き方で書ける

df_TrueFalse = df[df["西暦(年)] == 2000]

論理演算子を用いた複数条件の抽出

FT2 = df[(df["西暦(年)"] == 2000) & (df["都道府県名"] == "奈良県")]

特定の要素の選択,取得,変更

locilocが使える

loc

  • 単独の要素を選択
    • DataFrame.loc["行名","列名"]
  • 複数の要素を選択
    • DataFrame.loc[["行名1","行名2",...],["列名1","列名2",...]]
  • スライス表記
    • Dataframe.loc['行名1' : '行名2', '列名1':'列名2']

iloc

  • 単独の要素を選択
    • DataFrame.iloc[行番号,列番号]
  • 複数の要素を選択
    • DataFrame.iloc[[行番号,行番号2,...],[列番号1,列番号2,...]]
  • スライス表記
    • DataFrame.iloc[行番号(開始):行番号(終了),列番号(開始):列番号(終了)]
    • 終了の数値は-1まで出力されることに注意
    • 10:20を表示したければ10:21
GitHubで編集を提案

Discussion