Coding Diary.

(파이썬) Pandas DataFrame 판다스 데이터프레임 만들기 본문

Coding/Python

(파이썬) Pandas DataFrame 판다스 데이터프레임 만들기

life-of-nomad 2024. 6. 18. 12:53
728x90
반응형
지난 글에서 Pandas Series 만드는 방법과 요소에 액세스 하고 삭제, 산술 연산 하는 방법에 대해 알아보았습니다.
이번 글에서는 판다스 데이터프레임을 직접 만드는 방법에 대해 알아보겠습니다.

 

🔻(참고)판다스 산술연산🔻

 

(파이썬) 판다스 시리즈(Pandas Series)에 대한 산술 연산

지난 글에서 판다스 시리즈를 만들고 요소에 액세스하고 삭제하는 방법에 대해 알아보았습니다. 이번 글에서는 판다스 시리즈의 산술 연산하는 방법에 대해 알아보겠습니다. 🔻(참고)판다스

life-of-nomad.tistory.com

🔻(참고)판다스 시리즈 만들기🔻

 

(파이썬) 판다스(Pandas) 시리즈 만들기, .loc/.iloc 이용해서 요소들에 액세스하고 삭제하기

지난 글에서 넘파이(NumPy)에 대해 알아보았습니다. 이번 글에서는 판다스(Pandas)의 시리즈 만드는 방법, 요소에 액세스하고 삭제하는 방법에 대해 알아보겠습니다. 🔻(참고)넘파이🔻 (파이썬) N

life-of-nomad.tistory.com

 

1. 수작업으로 DataFrame 만들기

1) Series의 딕셔너리로 DataFrame 만들기

  • Pandas DataFrame 은 레이블이 달린 행과 열로 이루어진 2차원 데이터 구조물로써 다양한 데이터 유형을 담을 수 있습니다.
  • 먼저, 딕셔너리를 사용하여 수작업으로 DataFrame을 만드는 방법에 대해 알아보겠습니다.
    • 1단계) Pandas Series의 딕셔너리 만들기
    • 2단계) 그 딕셔너리를 pd.DataFrame() 함수에 넣기
  • 예를 들어, Alice와 Bob이 온라인 상점에서 구매한 항목들이 포함된 딕셔너리를 만들겠습니다.
  • Pandas Series는 구매한 항목의 가격을 데이터로 활용하고 구매한 항목은 Pandas Series에 대한 인덱스 레이블로 활용할 것입니다.
import pandas as pd

items = {'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']),
'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}

print(type(items))
>>> <class 'dict'>
  • 이렇게 딕셔너리를 만들었다면 이것을 pd.DataFrame() 함수에 넣어 DataFrame을 만들면 됩니다.
shopping_carts = pd.DataFrame(items)
shopping_carts

  • 위에서 만들어진 데이터프레임을 보면 행과 열의 레이블이 굵게 나타난 표 형태입니다.
  • DataFrame의 행 레이블은 딕셔너리를 만들 때 사용한 2개의 Pandas Series의 인덱스 레이블이 합쳐져서 만들어 진 것입니다.
  • DataFrame의 열 레이블은 딕셔너리의 key에 있던 것입니다.
  • 열이 딕셔너리에 제공된 순서가 아니라 알파벳 순서로 배열되어 있습니다. 
  • DataFrame이 생성될 때마다 특정한 열이 특정한 행 인덱스에 값을 갖고 있지 않으면 Pandas는 거기에 NaN 값을 넣습니다.
  • 만약, 이 데이터를 머신러닝 알고리즘에 제공하려면 NaN값을 삭제해야 합니다.

2) DataFrame의 기본값  : 숫자로 된 인덱스

  • 위의 예시에서는 명확하게 정의된 인덱스가 있는 Pandas Series의 딕셔너리로 Pandas DataFrame을 만들었습니다.
  • 인덱스 레이블을 제공하지 않으면 Pandas는 DataFrame을 만들 때 숫자로 된 행 인덱스를 사용합니다.
data = {'Bob' : pd.Series([245, 25, 55]), 'Alice' : pd.Series([40, 110, 500, 45])}
df = pd.DataFrame(data)
df

  • NumPy가 ndarray에 인덱스를 지정할 때와 마찬가지로 Pandas는 0부터 DataFrame의 행에 인덱스를 지정합니다.

3) DataFrame의 속성 출력하기

  • Pandas Series에서 했던 것처럼 속성을 이용하여 정보를 추출할 수도 있습니다.
print(shopping_carts.shape)
>>> (5, 2)

print(shopping_carts.ndim)
>>> 2

print(shopping_carts.size)
>>> 10

print(shopping_carts.values)
>>> [[245. 500.]
     [ nan  40.]
     [ nan 110.]
     [ 25.  45.]
     [ 55.  nan]]
     
print(shopping_carts.index)
>>> Index(['bike', 'book', 'glasses', 'pants', 'watch'], dtype='object')

print(shopping_carts.columns)
>>> Index(['Bob', 'Alice'], dtype='object')

4) DataFrame의 특정한 열 선택하기

  • 우리는 shopping_carts DataFrame을 만들 때 딕셔너리 전체를 pd.DataFrame() 함수에 전달했습니다.
  • 하지만 데이터의 일부분만 사용하려는 경우가 있을 수 있습니다.
  • Pandas를 사용하면 키워드 column과 index를 사용하여 우리가 원하는 데이터를 선택하여 DataFrame에 넣을 수 있습니다.
bob_shopping_cart = pd.DataFrame(items, columns=['Bob'])
bob_shopping_cart

5) DataFrame의 특정한 행 선택하기

sel_shopping_cart = pd.DataFrame(items, index = ['pants', 'book'])
sel_shopping_cart

6) DataFrame의 특정한 행, 열 선택하기

alice_sel_shopping_cart = pd.DataFrame(items, index = ['glasses', 'bike'], columns = ['Alice'])
alice_sel_shopping_cart

7) 리스트들로 이루어진 딕셔너리로 DataFrame 만들기

  • 리스트(배열)들로 이루어진 딕셔너리를 이용하여 수작업으로 DataFrame을 만들수도 있습니다. 
  • 방법은 앞에서와 같습니다. 먼저 딕셔너리를 만들고, 그 딕셔너리를 pd.DataFrame() 함수에 넣습니다.
  • 하지만 딕셔너리에 있는 모든 리스트(배열) 은 길이가 같아야 합니다.
data = {'Integers' : [1, 2, 3], 'Floats' : [4.5, 8.2, 9.6]}

df = pd.DataFrame(data)
df

  • 방금 만든 data 딕셔너리에는 레이블 인덱스가 없기 때문에 pandas는 DataFrame을 만들 때 자동으로 숫자로 된 행 인덱스를 사용합니다. 

8) 리스트들로 이루어진 딕셔너리와 사용자 지정 행 인덱스(레이블)로 DataFrame 만들기

  • pd.DataFrame() 함수에서 키워드 index 를 사용하여 행 인덱스에 레이블을 넣을 수 있습니다.
data = data = {'Integers' : [1,2,3], 'Floats' : [4.5, 8.2, 9.6]}
df = pd.DataFrame(data, index = ['label 1', 'label 2', 'label 3'])
df

9) 파이썬 딕셔너리 리스트로 DataFrame 만들기

items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]

store_items = pd.DataFrame(items2)
store_items

  • item2 딕셔더리에는 레이블 인덱스가 없기 때문에 pandas는 DataFrame을 만들 떄 자동으로 숫자로 된 행 인덱스를 사용합니다. 

10) 파이썬 딕셔너리 리스트와 사용자 지정 행 인덱스(레이블)로 DataFrame 만들기

  • pd.DataFrame() 함수에서 키워드 index를 사용하여 행 인덱스에 레이블을 넣을 수 있습니다. 
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
store_items = pd.DataFrame(items2, index = ['store1', 'store2'])
store_items

728x90
반응형