0
3

備忘録:pandas テーブルデータ整形

Last updated at Posted at 2023-09-13

はじめに

社内・社外でデータサイエンス、統計の教育を務める機会が増えてきたため
pandas初心者向けに備忘録として、記事を書かせていただきます
テーブルデータ整形時、あるあるの処理を備忘録としてちょっとまとめておきます

データのインポート

import pandas as pd
data = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv")

データの確認

データの確認
data.head(5)

※カッコ内の数字が表示する行数
↓実行すると

image.png


データサイズの確認
data.shape

↓実行すると、行数・列数を確認できる

(150, 5)


ざっくり統計量の確認
data.describe()

↓実行すると

image.png

欠損値の確認
data.isna().any()

Falseであれば、欠損値がないことを確認できる
image.png

データの整形

使用する因子を絞る

sepal_lengthとspeciesの因子を抽出しcut_dataに代入する

use_col=['sepal_length','species']
cut_data=data[use_col]
cut_data.head()

↓実行すると

image.png
※sepal_lengthとspeciesのみを抽出できる


新たな因子を追加する

categoryをすべて1として追加する場合

cut_data['category']=1
cut_data.head()

↓実行すると

image.png

さらにsepal_lengthの個々の値とsepal_lengthの平均値の差をresidualという名前の因子で追加する場合

cut_data['residual']=cut_data['sepal_length']-cut_data['sepal_length'].mean()
cut_data.head()

↓実行すると

image.png


データの正規化

sepal_lengthに対して、min-max Normalizationを実施するとき

\frac{X-X_{min}}{X_{max}-X_{min}}
len_nol=( cut_data['sepal_length'] - cut_data['sepal_length'].min() )/( cut_data['sepal_length'].max() - cut_data['sepal_length'].min() )
cut_data['len_nol']=len_nol
cut_data.describe()

↓実行するとlen_nolの最小値が0,最大値が1となっていることを確認できる

image.png

データの標準化

sepal_lengthに対して標準化(standardization)を実施すると

\frac{X-μ}{σ}
len_sta = ( cut_data['sepal_length'] - cut_data['sepal_length'].mean() ) / cut_data['sepal_length'].std()
cut_data['len_sta']=len_sta
cut_data.describe()

↓実行するとlen_staの平均が0,分散が1となっていることを確認できる

image.png

データの結合

列方向にデータを結合する場合
dataの列の最後にcut_dataのpetal_lengthの正規化とpetal_lengthの標準化したものを結合する場合、

new_data=pd.concat([ data, cut_data['len_nol'], cut_data['len_sta'] ],axis=1)
new_data.head()

↓実行すると

image.png

データの保存

csv形式で保存する

new_data.to_csv("./newdata.csv")
%ls

実行するとカレントディレクトリにてnewdata.csvが保存されていることが確認できる

最後に

これらがサラッと書ければ概ね問題ないかなと感じます
必要なものはまた追記していこうと思います

0
3
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
0
3