[データ解析]データ加工1
14864 ワード
本明細書で使用する関数:pd.concat, pd.merge, isnull().sum(), describe(), groupby, pivot_table
pd.read csv(「データ位置」,index col=0):csvファイルを取得する関数を表し、index col=0は0列目をインデックスとして指定します.
ダウンロードデータ:https://github.com/wikibook/pyda1002
pd.concat([連結データ1,連結データ2],ignore index=True):垂直単純連結データの関数
pd.merge(データ1、データ2、on=「データムキー」、how=「結合方式」):データムデータを決定し、これに基づいてデータ(横方向)をマージします.
df[[新しいカラム名]=値
上記の形式で新しい列を作成できます.
dataframe.dtypes:データ変数のタイプを通知する
pd.to datetime():datetime形式に変換
groupby(「集計したいコラム」).統計方法.表示する列:データを必要なグループごとに統計およびレポートする関数
groupby():パケットデータ処理
pivot table():データの再加工 groupbyに出力したいコラムが複数ある場合は、リスト形式に指定できます. pivot table:行と列を指定できます.pivot table(データ,index="指定行",columns="指定列",value="統計したい列",aggfunc="統計")
学習データ加工プロセス
1.データの取得
pd.read csv(「データ位置」,index col=0):csvファイルを取得する関数を表し、index col=0は0列目をインデックスとして指定します.
ダウンロード
# customer_master : 고객 데이터, item_master : 취급 상품 데이터, transaction_1 : 구매내역 데이터, transaction_detail_1 : 구매내역 상세 데이터
customer_master = pd.read_csv('pyda100-master/1장/customer_master.csv')
item_master = pd.read_csv('pyda100-master/1장/item_master.csv')
transaction_1 = pd.read_csv('pyda100-master/1장/transaction_1.csv')
transaction_detail_1 = pd.read_csv('pyda100-master/1장/transaction_detail_1.csv')
transaction_2 = pd.read_csv('pyda100-master/1장/transaction_2.csv')
transaction_detail_2 = pd.read_csv('pyda100-master/1장/transaction_detail_2.csv')
2.連結データ(縦)
pd.concat([連結データ1,連結データ2],ignore index=True):垂直単純連結データの関数
pd.concat : 데이터프레임의 세로 방향 결합
transaction = pd.concat([transaction_1, transaction_2], ignore_index=True)
transaction_detail = pd.concat([transaction_detail_1, transaction_detail_2], ignore_index=True)
transaction.head()
3.販売データ間の結合(連結)
pd.merge(データ1、データ2、on=「データムキー」、how=「結合方式」):データムデータを決定し、これに基づいてデータ(横方向)をマージします.
join_data = pd.merge(transaction_detail, transaction[["transaction_id",'payment_date', 'customer_id']], on='transaction_id', how='left')
join_data.head()
4.マスターデータのマージ
join_data = pd.merge(join_data, customer_master, on='customer_id', how='left')
join_data = pd.merge(join_data, item_master, on='item_id', how='left')
join_data.head()
5.必要なデータ列の作成
df[[新しいカラム名]=値
上記の形式で新しい列を作成できます.
join_data['price'] = join_data['quantity'] * join_data['item_price']
join_data[['quantity', 'item_price', 'price']].head()
6.毎月の統計
dataframe.dtypes:データ変数のタイプを通知する
pd.to datetime():datetime形式に変換
groupby(「集計したいコラム」).統計方法.表示する列:データを必要なグループごとに統計およびレポートする関数
join_data.dtypes
join_data['payment_date'] = pd.to_datetime(join_data['payment_date']) # datetime 형으로 변환
join_data['payment_month'] = join_data['payment_date'].dt.strftime("%Y%m") # payment_month를 연월 단위로 작성. strftime --> 년, 월의 추출이 가능
join_data[['payment_date', 'payment_month']].head()
# 그룹별로 집계하기
join_data.groupby('payment_month').sum()['price'] # groupby('집계하고 싶은 칼럼').집계 방법.표시할 컬럼
7.月別商品統計データ
groupby():パケットデータ処理
pivot table():データの再加工
8.各商品の販売傾向を示す
graph_data = pd.pivot_table(join_data, index='payment_month', columns='item_name', values='price', aggfunc='sum')
graph_data.head()
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(list(graph_data.index), graph_data['PC-A'], label='PC-A')
plt.plot(list(graph_data.index), graph_data['PC-B'], label='PC-B')
plt.plot(list(graph_data.index), graph_data['PC-C'], label='PC-C')
plt.plot(list(graph_data.index), graph_data['PC-D'], label='PC-D')
plt.plot(list(graph_data.index), graph_data['PC-E'], label='PC-E')
plt.legend()
Reference
この問題について([データ解析]データ加工1), 我々は、より多くの情報をここで見つけました https://velog.io/@ja480855875/Data-Analysis-데이터-가공テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol