본문 바로가기
programming/python

python3 - 판다스 - 데이터프레임 (basic)

by sniffer-k 2023. 6. 14.

파이썬에서 기본적으로 제공하는 데이터 타입은 대부분은 1차원적인 데이터 유형이다 (2차원으로 변경을 위해서는 이중 배열 또는 dictionary 형태를 사용해야한다) 판다스 모듈중 데이터 프레임은 2차원 형태의 데이터이다

우리에게 친숙한 엑셀에서 다루는 데이터 형태라고 생각하면된다

 

데이터 프레임 기본 구조는 다음과 같다

 

class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)

 

data : dictionary (칼럼 정보가 있는겨우 순서에 따라 데이터가 삽입됨), array, 리스트 형태의 객체

index : 인덱스, 배열 형태의 객체 (행 레이블 정보)

columns : 인덱스, 배열 형태의 객체 (열 레이블 정보)

dtype :  데이터 타입을 강제할수 있음 (default None)

copy  : 입력값의 데이터 복사 형태 지정  (default None), false로 지정한경우 입력값 변경에 따라 생성된 결과값에도 영햐을줌

             (c 언어에서 포인터로 인자값을 전달하여 영향을 주는경우와 유사)

 

 

  데이터 프레임 생성 / 저장

import pandas as pd
from pandas import DataFrame
import numpy as np

data = {'DATE' :['2023-06-01','2023-06-02','2023-06-03'],
		'NAME' :['TEST1','TEST2','TEST3'],
		'VALUE' :[1234,5678,9999]}

df1 = DataFrame(data)

print(df1)

# return 
# user@pandas % python3 sample1.py 
#          DATE   NAME  VALUE
# 0  2023-06-01  TEST1   1234
# 1  2023-06-02  TEST2   5678
# 2  2023-06-03  TEST3   9999


data2 = np.array([[1, 2, 3], [4, 5, 6], [7, 5, 6]])

df2 =DataFrame(data=data2,index =['r1','r2','r3'],columns =['c1','c2','c3'])

print(df2)

# return 
#     c1  c2  c3
# r1   1   2   3
# r2   4   5   6
# r3   7   5   6

df1.to_excel(excel_writer='df1.xlsx',sheet_name='sheet')
df2.to_excel(excel_writer='df2.xlsx',sheet_name='sheet')

판다스 데이터 프레임으로 생성한 객체는 "to_csv() " 함수를 이용하여 파일로 저장할 수 있다

 

○ 다음은 파일로 저장(*.csv) 데이터 프레임으로 변환

import pandas as pd
from pandas import DataFrame
import numpy as np

df1 = pd.read_excel('./df2.xlsx', sheet_name='sheet1')

print(df1)

#              c1  c2  c3
# 0         r1   1   2   3
# 1         r2   4   5   6
# 2         r3   7   5   6

 

○ 데이터 프레임 수정 !

 

이미 생성된 데이터 프레임을 수정할때에는 멤버 함수 "rename"을 이용한다

df1 = pd.read_excel('./df2.xlsx', sheet_name='sheet1')

print('--------------------')
print(df1)

#     x  c1  c2  c3
# 0  r1   1   2   3
# 1  r2   4   5   6
# 2  r3   7   5   6

# 칼럼만 수정 
df1.columns=['K0','K1','K2','K3']

#K0 에 칼럼이 있는경우 K00으로 변경
#인덱스 0 문자열이 있는경우 00으로 변경
df1_rename_result = df1.rename(columns={'K0':'K00','K2':'K22'},index={'0':'00'})

print(df1_rename_result)

 

 

 


https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html

 

728x90