Data analysis/데이터전처리

[데이터 전처리] 1. 데이터프레임 만들기

endingo 2025. 4. 1. 21:18

1.1. 데이터프레임 형태

 

1) 인덱스와 열 이름이 없는형태

 

2) 열이름을 지정한 형태

 

3)인덱스와 열이름을 지정한 형태

 

 

1.2. 데이터프레임 만들기

 

1.2.1. 판다스 불러오기

import pandas as pd

 

1.2.2 리스트로 만들기

 

1) 1 차원 리스트 만들기

# 1차원 리스트 만들기
stock = [94500, 92100, 92200, 92300]

# 데이터프레임 만들기
df = pd.DataFrame(stock)

# 확인
df.head()

 

 

2) 2차원 리스트 만들기

# 2차원 리스트 만들기
stock = [[94500, 92100, 92200, 92300],
         [96500, 93200, 95900, 94300],
         [93400, 91900, 93400, 92100],
         [94200, 92100, 94100, 92400],
         [94500, 92500, 94300, 92600]]

# 데이터프레임 만들기
df = pd.DataFrame(stock)

# 확인
df.head()
 

3) 열이름 추가하기 

dates = ['2019-02-15', '2019-02-16', '2019-02-17', '2019-02-18', '2019-02-19']
names = ['High', 'Low', 'Open', 'Close']

# 데이터프레임 만들기
df = pd.DataFrame(stock, index=dates, columns=names)

 

score= pd.DataFrame(list_score, index=list_index, columns=list_col)

score

 

4) 딕셔너리로 데이터 프레임만들기

인덱스는 C0001 ~ C0004이고, 컬럼에는 Name, Level, Score의 데이터프레임이 만들어진

# 딕셔너리 만들기
cust = {'Name': ['Gildong', 'Sarang', 'Jiemae', 'Yeoin'],
        'Level': ['Gold', 'Bronze', 'Silver', 'Gold'],
        'Score': [56000, 23000, 44000, 52000]}

# 데이터프레임 만들기(인덱스 지정함)
df = pd.DataFrame(cust, index=['C0001', 'C0002', 'C0003', 'C0004'])

# 확인
df.head()

 

인덱스와 컬럼을 지정해주고 싶으면 리스트를 만들고 아래와 같이 리스트를 입력해주면된다.

score = pd.DataFrame(list_score, index=list_index, columns=list_col)

 

 

1.3. CSV 파일 읽어오기

 

데이터 분석을 하기위하여 첫번째 단추는 read_csv() 함수로 파일을 불러오는 것이다.

 

주요 옵션:

  • sep: 구분자 지정(기본값 = 콤마)
  • header: 헤더가 될 행 번호 지정(기본값 = 0)
  • index_col: 인덱스 열 지정(기본값 = False)
  • names: 열 이름으로 사용할 문자열 리스트
  • skiprows: 처음 몇 줄을 무시할 것인지 지정, 리스트로 지정 가능
  • encoding: 인코딩 방식을 지정

1) 데이터 읽어오기

 
# 데이터 읽어오기
path = '?.csv'
pop = pd.read_csv(path)

# 상위 10행만 확인
pop.head(10)

path의 csv 파일을 읽어와 pop에 저장한다.

pop.head(10)은 10개의 상위 요소만 불러오는 것이다.

 

1.4. 인덱스 설정

 

1.4.1 일반 열을 인덱스로 지정

 

1) 특정 컬럼을 인덱스로 지정

 

set_index()

메서드를 통해 인덱스 열을 설정합니다.

# 기존 열 중 하나를 인덱스로 설정
pop.set_index('year', inplace=True)

# 확인
pop.head()

한번만 실행하기!

 

2) 인덱스 이름 삭제 

 

?.index.name=None

'year' 이름만 삭제되고 values는 유지된다.

# 인덱스 이름 삭제
pop.index.name = None

# 확인
pop.head()

 

3) 인덱스 초기화

 

reset_index()

인덱스가 원래 'year'이었는데 다시 0~10... 이런 형태로 돌아왔다.

drop=True 설정값을 설정하면 'year' 인덱스 열을 일반열로 가져오지 않고 버리게된다.

 

# 인덱스 초기화
pop.reset_index(drop=False, inplace=True)

# 확인
pop.head()

 

4) 인덱스 이름 변경

 

기존 인덱스를 초기화해서 자동으로 'index'라는 이름으로 'year' 컬럼의 이름이 설정된다. 이를 방지하기 위해

컬럼의 index라는 이름을 다시 'year'로 바꿔주자.

이래야 1981~1982의 columns들이 year로 식별 되는 것이다.

# 열 이름 변경
pop.rename(columns={'index': 'year'}, inplace=True)

# 확인
print(pop.head())