[학습노트06] 세로 데이터를 BI 도구로 변환하기

개시하다
이번 기사 제작자의 머신러닝과 필기를 위해 제작된 기사입니다.
만약 잘못이 있다면 평론에서 지적해 주십시오.
더 좋은 방법이 있다면 메시지를 남겨주세요.
잘 부탁드립니다.
이번 목적
BI 도구를 사용하면 수직 데이터 처리가 더욱 용이합니다.
그 전환 방법을 기록하다
참고 자료
파이썬의 새로운 데이터 분석 교과서 [사전학]

기계 학습 알고리즘의 구조 기계 학습 도감 [추정신도]

호출 라이브러리

#ライブラリのインポート
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
import random
random.seed(0)
import copy

# データ可視化のライブラリ
import seaborn as sns
#最大表示列数の指定(ここでは100列を指定) 
pd.set_option('display.max_columns',100)

# floatの表示方法を、小数点以下2桁で設定する処理
pd.options.display.float_format = '{:.2f}'.format

데이터 준비 및 확인
#データの読み込み
# data → 呼び出すデータのファイル名
# train_data.csv → 読み込むファイル名
data = pd.read_csv("data/train_data.csv")

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

#データ数確認
data.shape

#データ情報の要約確認
data.info()

#データ統計要約確認
data.describe()

부족한 값을 확인하고 삭제하는 방법
참고 자료
#データの欠損値を確認したい場合
df.isnull().sum()

#列の値が全て欠損値の場合削除する
df = df.dropna(how="all",axis = 1)

#XXの列に欠損値がある場合、その行を削除する
df = df.dropna(subset = ["XX"])

연수별로 나누다
#勤続年数の部分を取り出し、リストに変換する
X = "勤続年数"
rows = []
for i in df[X]:
    rows.append(i)

#年数ごとの区分を分ける
# 
#勤続年数の区分を作成する
#1年未満 (i <1の場合、"1年未満"と表示)
#1年以上〜3年未満(i<3の場合、"1年以上~3年未満"と表示)
#3年以上〜5年未満(i<5の場合、"3年以上~5年未満"と表示)
#5年以上〜10年未満(i<10の場合、"5年以上~10年未満"と表示)
#10年以上(else、"10年以上"と表示)

#空のリストを作成
years = []

#リストの数値によって、区分を入力する
for i in rows:
    if i < 1:
        years.append("1年未満")
    elif i <3:
        years.append("1年以上~3年未満")
    elif i < 5:
        years.append("3年以上~5年未満")
    elif i <10:
        years.append("5年以上~10年未満")
    else:
        years.append("10年以上")

#"年数区分"にリストの値を挿入していく
df["年数区分"] = years
#データセットの確認をする。
df.head()

세로 데이터로 변환
참고 자료
# 縦持ちにデータ変換
#左から6列目までのデータをIDとする
id_vars = list(df.columns[:7])
#左から7列目以降のデータを値とする
value_vars = list(df.columns[8:])

#データを縦持ちにする
df = df.melt(id_vars=id_vars,value_vars=value_vars,)
#データを確認する
df.head()

열 이름을 변경할 때
#"variable"を"項目"にカラム名を変更する
df = df.rename(columns = {"variable":"項目"})

관련 데이터 추출
#製品リストの作成
#Semi ⇨ 製品名の入った表 としている
df_list = Semi
rows = df_list["製品リスト"]
#表の中に入っている値を全て取り出す、区切りは"/"で行う
all_ele_list = "/".join(rows)
all_ele_list = all_ele_list.split("/")
unique_ele_list = list(set(all_ele_list))
target_list= sorted(unique_ele_list)
#条件として当てはめるリスト作成
#target_list

#読み込み条件を当てはめる
df_Semi= df_after.query("商品リスト in @target_list")
#表として出力する
df_Semi.head()

Excel로 데이터 내보내기

# "加工後データ"というエクセルファイルを出力する
df_after.to_excel("加工後データ.xlsx", index=False, encoding='cp932')

#"加工後データ"というCSVファイルを出力する
df.to_csv('加工後データ.csv')

좋은 웹페이지 즐겨찾기