본문 바로가기
Python/Data Science

Python - Pandas (2)

by hooni40 2021. 7. 21.
728x90
반응형

 안녕하세요, 지난 시간에는 Pandas가 무엇인지와 Pandas 내부의 DataFrame 함수를 이용한 Data Frame을 만드는 것을 정리해 보았습니다. 이번 시간에는 다른 Data Frame을 만드는 방법을 정리해보겠습니다.

 

 지난 시간에는 2차원 리스트를 만든 후 Pandas의 DataFrame을 이용해 만들었습니다. 아래와 같이 말이죠!

import numpy as np
import pandas as pd

two_dimensional_list = [['dongwook', 50, 86], ['sineui', 89, 31], ['ikjoong', 68, 91], ['yoonsoo', 88, 75]]
my_df = pd.DataFrame(two_dimensional_list)

 

 위의 two_dimensional_list를 Numpy의 array함수를 이용해 이차원 배열을 만들어서 DataFrame에 넣어도 동일한 결과를 얻을 수 있습니다.

import numpy as np
import pandas as pd

two_dimensional_list = [['dongwook', 50, 86], ['sineui', 89, 31], ['ikjoong', 68, 91], ['yoonsoo', 88, 75]]
my_df1 = pd.DataFrame(two_dimensional_list)

two_dimensional_arr = np.array(two_dimensional_list)
my_df2 = pd.DataFrame(two_dimensional_arr) // my_df1과 동일한 결과를 얻을 수 있습니다!

 

 그런데 위의 방법을 보면 굳이 np.array를 이용해서 array를 만든 후 DataFrame을 통해 만들어야 할까라는 생각이 드실 수 있으신데요, 저렇게 np.array를 이용하면 array의 특성을 사용하여 array 간의 여러 동작들을 할 수 있습니다!(배열 내 요소들에 덧셈, 곱셈 등등)

 

 Data Frame을 만드는 다른 방법으로는 Pandas의 Series함수를 이용해 만든 1차원 ndarray 여려개를 담고 있는 리스트를 DataFrame함수를 사용하여서 만들 수 도 있습니다.

import numpy as np
import pandas as pd

//첫번째 방법 리스트를 이용해 만들기
two_dimensional_list = [['dongwook', 50, 86], ['sineui', 89, 31], ['ikjoong', 68, 91], ['yoonsoo', 88, 75]]
my_df1 = pd.DataFrame(two_dimensional_list)

//두번째 방법 리스트를 np.array를 이용해 변경 후 만들기
two_dimensional_arr = np.array(two_dimensional_list)
my_df2 = pd.DataFrame(two_dimensional_arr) // my_df1과 동일한 결과를 얻을 수 있습니다!

//세번째 방법 Series함수를 이용해 만든 1차원 ndarray를 여러개 포함한 리스트를 이용해 만들기
list_of_series = [
    pd.Series(['dongwook', 50, 86]), 
    pd.Series(['sineui', 89, 31]), 
    pd.Series(['ikjoong', 68, 91]), 
    pd.Series(['yoonsoo', 88, 75])
]
my_df3 = pd.DataFrame(list_of_series)

 

 여기서 끝이 아닙니다! Python을 하면서 자료형으로 배운 Dictionary를 이용해서도 DataFrame을 만들 수가 있습니다. 사전의 key로 Column 이름을 쓰고, 해당 Column에 해당하는 리스트, array, Series를 Value로 넣어 만들 수 있습니다.

import numpy as np
import pandas as pd

name = ['alex', 'hoom', 'minji']
english_score = [60, 78, 20]
math_scores = [97, 48, 100]

dict1 = {
	'name': name,
    'english_score': english_score,
    'math_score': math_scores
}

dict2 = {
	'name': np.array(name),
    'english_score': np.array(english_score),
    'math_score': np.array(math_scores)
}

dict3 = {
	'name': pd.Series(name),
    'english_score': pd.Series(english_score),
    'math_score': pd.Series(math_scores)
}

# 밑의 3가지 모두 같은 Data Frame입니다
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
df3 = pd.DataFrame(dict3)

 

 

 

 위의 예제는 리스트가 담긴 Dictionary를 이용하여 DataFrame을 만든 것인데요, 반대로 Dictionary가 담긴 리스트를 이용해서도 DataFrame을 만들 수 있습니다.

import numpy as np
import pandas as pd

my_list = [
    {'name': 'dongwook', 'english_score': 50, 'math_score': 86},
    {'name': 'sineui', 'english_score': 89, 'math_score': 31},
    {'name': 'ikjoong', 'english_score': 68, 'math_score': 91},
    {'name': 'yoonsoo', 'english_score': 88, 'math_score': 75}
]

df = pd.DataFrame(my_list)

 

 

 이렇게 DataFrame을 만드는 방법에 대해 정리해보았습니다. 최근에 갑자기 회사의 일이 많아져서 퇴근을 하고 집에 오면 11시가 되어 공부할 시간도 줄어들고 있는데요, 못해도 2일 1포스팅을 목표로 꾸준히 공부해보겠습니다!

728x90
반응형

'Python > Data Science' 카테고리의 다른 글

DataFrame indexing (1)  (0) 2021.07.24
Python - Pandas (3)  (0) 2021.07.22
Python - Pandas (1)  (0) 2021.07.19
Python - Numpy (3)  (0) 2021.07.17
Python - Numpy (2)  (0) 2021.07.16

댓글