2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】pandasで「全データ取得」と「空白抽出」

Posted at

はじめに

Python初学者のわたしが覚えるために、学んだことを整理し、理解を深めるために記事を書いています。
今日はpandasです!🐼
可愛い名前のくせに、色々なことができるそうです!

pandasとは?

Excel、スプレットシート、CSVなどのデータを取得して、計算する、追加するなど自由に加工や集計をすることができます!

前提:今回はスプレッドシートからデータを処理していきます!

スプレッドシートから gspread が取ってきたデータを、Pandasの表(DataFrame)に変換してみます。
①全データを取得する
②ステータスが空白のデータを取得する

①全データ取得

【スプレッドシートのデータ】
ドーナツ名    ステータス
チュロッキー     揚げ済み
ココナッツチョコ   (空白)
※空白は(””)で入っている想定です!

使用しているgspreadメソッド

ここでしていること!
・1行目を ヘッダー として認識
・各行を {列名: 値} の 辞書 に変換
・結果は 辞書のリスト

dict_data = worksheet.get_all_records()

#ターミナル
[
{'ドーナツ名': 'チュロッキー', 'ステータス': '揚げ済み'},
{'ドーナツ名': 'ココナッツチョコ', 'ステータス': ''}
]

②pandasに変換する

df = pd.DataFrame(dict_data)

これで取得したデータがpandasのDataFrameになります!

ポイント
get_all_recordsget_all_valuesの違い!

get_all_recordsは辞書データとなって、1行目をヘッダーとして扱います!
get_all_valuesはリストデータとなって、1行目もデータとして扱います!

values_data = worksheet.get_all_values()

#ターミナル
[['ドーナツ名', 'ステータス'],['チュロッキー', '揚げ済み'],['ココナッツチョコ', '']]

③空白ステータス抽出

同じ空白でも正体は別物!!!

見た目 中身 正体
空白 "" 空文字(文字数0の文字列)
空白 NaN 欠損値 (本当に何にもない)

空白って空白でしょ?って思っていたんですが、以下のコードを書いたらNaNかどうかを判明していた!
今回のような 空文字("")には反応しませんでした〜!!😱

ポイント
そもそもどっちも見た目は空っぽ!コードで判定してようやく分かった!

【NaNの場合】

df[df['ステータス'].isna()]

#df['ステータス']はこのステータスの列だけ取り出す
#.isna()は欠損値を判定
#df[ 条件 ](行フィルタ)→Trueだけを残す

.isna() とはpandasのメソッドでNaN(欠損値)かを判定している
★結果は True / False

【空文字””の場合】

df[df['ステータス'].astype(str).str.strip() == ""

#df['ステータス']はこのステータスの列だけ取り出す
#.astype(str) → シリーズの型を文字列に
#.str.strip() → 文字の前後に空白があった場合は削除してね
#== "" → 中身が空文字の場合だけTrue
#df[ 条件 ](行フィルタ)→Trueだけを残す

Pandasでデータを取ってきたときはSeriesという見た目は似てるけど別物になっている状態!
.tolist()を付けてるとSeriesがリストに変わるそうです!

まとめ

見た目は空白でも””(空文字)とNaN(欠損値)が存在する!
空白 = NaN とは限らない!
スプレッドシートの空白は 空文字””(空文字)の場合が多い!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?