본문 바로가기

Python/Pandas

Pandas _ 데이터 병합 예시


#%%

import numpy as np
import pandas as pd
#%%
product_df = pd.read_csv()
review_df = pd.read_csv()

flipkart_df = pd.merge(
    product_df, 
    review_df, 

    left_on="id",
    right_on='product__id',
    
    how='right',    # Review에 있는 id, 즉 product__id를 기준으로 데이터를 생성합니다. 만약 "product" 정보가 반드시 존재하는 review들로만 데이터를 구성하고 싶으면 "left"로 하시면 됩니다.
)
flipkart_df = flipkart_df.drop(['id', 'product__id', 'author'], axis=1)
flipkart_df.head(2)

amazon_df = pd.read_csv()

df = pd.concat([amazon_df, flipkart_df], axis=0)
df.head()
df.tail()

df['date'] = pd.to_datetime(df['date'])
df['price'] = df['price'].astype(float)

df.set_index('date', inplace=True)
df = df.loc[:"2017-12-31"]   # 비록 DatetimeIndex이지만, 날짜를 문자열 string으로 표현하여 loc을 이용한 range indexing이 가능합니다.

df.rename(columns={'title_x':'name', 'title_y':'title'}, inplace=True)

df['price_grp'] = pd.cut(df['price'], [0, 5000, 15000, 200000], labels=["저가", "중가", "고가"])

# 전체제품 기간별 제품 평균가

# 아래에서 보이시는 것처럼 groupby()의 인자에는 반드시 'column명'이 아니어도 됩니다.
# 아래 예제처럼 df라는 object로부터 추출할 수 있는(여기서는 df.index에서 추출한) categorical 변수들을 사용해도 됩니다.
df.groupby([df.index.year, df.index.quarter]).agg({'price':'mean'})


df.groupby([df.index.year, df.index.quarter]).agg({'price':'mean'}).plot(kind='bar')

ax = df.resample("Q")['price'].mean().plot();

ax.set_title("기간별 제품 평균가격")
ax.set_xlabel("기 간")
ax.set_ylabel("가 격")

df.groupby(['brand']).agg({'name':'count'}).plot(kind='bar', figsize=(8,5));

'Python > Pandas' 카테고리의 다른 글

Pandas _ 이상치 제외 방법  (0) 2021.01.27
Pandas _ join & merge  (0) 2021.01.16
Pandas _ concat & pivot  (0) 2021.01.13
Pandas _ row 추가하기 (loc & append)  (0) 2021.01.12
Pandas _ qcut(균할분등) & groupby()  (0) 2021.01.11