Python/데이터 분석 기초

[머신러닝을 위한 파이썬] 3. pandas 활용 예제

동현 유 2021. 3. 18. 20:29

 

>> 완벽하게 알아야 하는 자료구조

  • Series
  • DataFrame

>> 알아야하는 문법

  • 파일 읽어오기, 저장하기
  • Series 생성방법
  • DataFrame 생성방법
  • DataFrame Col : 추가, 삭제, 이름변경, 새로운 데이터 할당, 선택적 불러오기
  • loc / iloc
  • Index 변경 (KEY 값 변경)
  • Data drop
  • Operation, BroadCasting
  • inplace, map, apply
  • decribe, unique
  • Groupby & CrossTab & Pivat Table
  • Gierarchical Index
  • Aggregation
  • Transformation
  • Merge & Concat
  • Join

 

1번과 2번 예제 설명은 여기를 참고

총 3개의 예제가 있다!

 

1,2번 문제.zip
0.41MB
3번.zip
0.38MB

 

 

#1. 답안코드

# 첫번째 방법 : groupby
def get_rating_matrix(filename):

    # 윈도우 \, 그 외 os에서는 /
    df = pd.read_csv('.\\'+filename)
    
    return df.groupby(['target','source'])['rating'].first().unstack(fill_value = 0)
    
# 두번째 방법 : crosstab    
def get_rating_matrix(filename):

    # 윈도우 \, 그 외 os에서는 /
    df = pd.read_csv('.\\'+filename)
    
    return pd.crosstab(index=df.target,columns=df.source,values=df.rating,aggfunc='sum').fillna(0)    

코드 실행 결과, 동일한 결과를 얻는다.

 

 

#2. 답안코드

def get_frequent_matrix(filename):

    # 윈도우 \, 그 외 os에서는 /
    df = pd.read_csv('.\\'+filename)
    df['rating'] = 1 
    
    # groupby도 가능하다!
    return pd.crosstab(index = df.source,columns=df.target,values=df.rating,aggfunc='sum')

코드 실행 결과

 

#3. 답안코드

import numpy as np
import pandas as pd

# 1번
def createarr(row,col,mean,std):
   return  np.random.normal(mean,std,row*col).reshape(row,col)

# 2번
df = pd.read_csv("./01-23-2020.csv")

# 3번
def confirmed():
    return df.groupby('Country/Region')['Confirmed'].sum()
    
# 4번    
def confirmed():
    result = pd.DataFrame()
    result['01-23-2020'] = df.groupby('Country/Region')['Confirmed'].sum().sort_values(ascending = False)
    
    
    return result
    
# 5번   
def get_wuhan_confirmed(time):
    df = pd.read_csv('.\\' + time + '.csv')
    result = pd.DataFrame()
    result[time] = df.groupby('Country/Region')['Confirmed'].sum().sort_values(ascending = False)
    return result

# 6번
def merge(x,y):
    data1 = get_wuhan_confirmed(x)
    data2 = get_wuhan_confirmed(y)
    result = pd.merge(data1,data2,on ='Country/Region',how='outer').fillna(0) 
    result['확진자 증가 수'] = result[y] - result[x]
    return result