0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

データ分析用パーツ集

Posted at

#データ分析用パーツ集

  • 履歴
    • 2021/01/21 ver1
version.cmd
python --version
:: Python 3.7.6
jupyter --version
:: jupyter core     : 4.6.1
:: jupyter-notebook : 6.0.3
:: qtconsole        : 4.6.0
:: ipython          : 7.12.0
:: ipykernel        : 5.1.4
:: jupyter client   : 5.3.4
:: jupyter lab      : 1.2.6
:: nbconvert        : 5.6.1
:: ipywidgets       : 7.5.1
:: nbformat         : 5.0.4
:: traitlets        : 4.3.3

パッケージ

import.py
import pandas as pd #データ解析を支援する機能を提供するライブラリ
import numpy as np #数値計算の拡張モジュール 
import matplotlib #データビジュアライズに関するパッケージ
import matplotlib.pyplot as plt # 自動的にプロットするためのインターフェース、らしい
from datetime import datetime as dt #日付や時刻を操作するためのモジュール
from sklearn.preprocessing import StandardScaler #データ標準化用モジュール

matplotlib内で日本語を扱う

参照元: matplotlibで日本語

matplot_japanese.py
from matplotlib import rcParams
rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'VL PGothic', 'Noto Sans CJK JP']

表示するグラフや画像のサイズ

figsize.py
plt.figure(figsize=(20,2))

データの入出力

SQLから読み込み

#SQL
import pymysql
import sqlalchemy
from sqlalchemy import create_engine

#接続情報
url = 'mysql+pymysql://root:XXXX@127.0.0.1:3306/databasename?charset=utf8'
engine = sqlalchemy.create_engine(url, echo=False)
#実行
query = "SELECT * FROM Table"
dataset = pd.read_sql(query,con = engine)

CSVの入出力

csv.py
dataset = pd.read_csv("pass of csv", encoding = "utf-8")
dataset.to_csv("pass of csv", encoding="shift-jis")

クリップボードに出力

clipboard.py
!pip install pyperclip
import pyperclip
pyperclip.copy(STR_XXX)

前処理的な

内容の確認

info.py
dataset.info()
dataset.describe() #max,min,mean,std,四分位数等 

整形

index.py
#データフレームにインデックスの設定
dataset2 = dataset.set_index('StoreCD')
#型変更
dataset['colum']=dataset['colum'].astype(int)

###データフレームの分解と結合

  • クロス集計されたデータを単純なROWデータに分解する
melt_concat.py
#データフレームの分解
meltDF1 = pd.melt(dataset,id_vars='index_column',var_name='horizon_axis_column_name',value_name='value_column_name')
#データフレームの結合
concatDF = pd.concat([meltDF1,meltDF2]) 

NULL値の処理

null.py
dataset.fillna(0,inplace=True) #0埋め
dataset.isnull() #データフレーム全体で確認
dataset.isnull().any() #列ごとに確認

ダミー変数

dummy.py
target_col = 'a'
str_colmns = ['b','c','d'] #数値でない列
dummie_cols = ['b'] #数値でない列の中でダミー化したい列
exclude_cols = [col for col in str_colmns if col not in dummie_cols] #
#ダミー変数化
df = pd.get_dummies(data=df, columns=dummie_cols)
#ダミー化した後の列から特徴量として利用する列を指定する
feature_cols = [col for col in df.columns if col not in exclude_cols]
 

##可視化と探索

項目間の相関係数をとる

corr.py
corrDF = df[feature_cols].corr()

ヒートマップ

heatmap.py
import seaborn as sns
sns.heatmap(corrDF,annot=False) #annot=Trueで数値を表示する

image.png

重なる棒グラフ

distplot.py
import seaborn as sns
g=sns.FacetGrid(df,hue="target_column",height=3)
g.map(sns.distplot,"feature_column",kde=False)
g.add_legend()

image.png

seabornの色設定

  • 連動した色設定にすることができる
color.py
flatui = ['#969696', '#DA5019']
sns.set_palette(flatui)

image.png

comment

  • 過去のコードから探し出してコピペするのが面倒なので
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?