Keep-H's Hardware Design Study Notes

pandas (2) CSV 파일 본문

Python/pandas

pandas (2) CSV 파일

Keep-H 2023. 8. 12. 23:55

1. dictionary를 이용한 DataFrame 만들기

 

names = ['JH','JS','OU','SK']
english_scores = [50, 89, 68, 88]
math_scores = [86, 31, 91, 75]

값은 임의로 할당했고 이를 이용하여 DataFrame을 구성한다. 구성하는 방법은 여러가지가 있다.

values를 리스트로 할당하거나 numpy array를 이용할 수 있고, pandas의 Series를 이용할 수 있다. 

 

#1
dict1 = {
    'name' : names,
    'english_score':english_scores,
    'math_score':math_scores
}

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

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

DataFrame을 임의의 변수에 할당하여 확인한다.

df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
df3 = pd.DataFrame(dict3)

출력 결과

 

다음과 같이 리스트로 값을 전달하지 않고 dictionary를 구성하여 DataFrame으로 만들 수 있다.

my_list = [
    {'name':'JH','english_score':50, 'math_score':'86'},
    {'name':'JS','english_score':89, 'math_score':31},
    {'name':'OU', 'english_score':68, 'math_score':31},
    {'name':'SK','english_score':88, 'math_score':75}
]
df = pd.DataFrame(my_list)

출력 결과는 위와 동일하다.

 

 

 

2. CSV 파일을 pandas를 통해 읽어오자.

CSV는 ' , '로 구분한 정보가 저장된 파일이다. 이 파일을 pandas를 통해 읽어와 DataFrame으로 나타낼 수 있다.

강의에서는 제공한 파일은 iphone 기종에 따른 출시일, 디스플레이, 메모리 등으로 구분했다.

 

파일을 가지고 있다면 파일 경로를 알아야 한다.

df = pd.read_csv('iphone.csv')
df

# header가 없는 파일인 경우
# df = pd.read_csv('iphone.csv', header = None)

이처럼 read_csv라는 함수를 사용하는데 이 함수는 파일의 첫 줄을 header로 인식한다. 따라서 따로 header가 없는 파일인 경우 주석과 같이 작성해야 한다.

 

출력 결과

 

출력 결과를 보면 Unnamed 로 표시된 부분이 있는데 이는 기종에 대한 header가 부족했기 때문이다.

기종을 이용하여 표를 분류하면 더 직관적으로 확인할 수 있다.

 

df = pd.read_csv('iphone.csv',index_col = 0)

# 0번째 columns 를 row 이름으로 지정해줄 수 있음

index_col = X 는 X번째 인덱스에 해당하는 열의 값을 0 ~ 6으로 구분된 행으로 대체하여 나타낼 수 있게 한다. 

 

 

출력 결과

 

 

 

- 표에서 값을 가져오는 방법

DataFrame을 저장한 변수를 이용하여 값을 가져온다.

앞서 저장했던 df를 그대로 사용하여 값을 가져오는 연습을 했다.

 

iPhone8의 '메모리' 부분만을 추출하기 위해서 loc() 함수를 사용했다.

인자로 알고싶은 행과 열을 입력하여 사용할 수 있다.

df.loc['iPhone 8','메모리']

 

출력 결과

 

 

iPhone8의 모든 정보를 가져오기 위해서는 행의 값만 작성하면 된다.

df.loc['iPhone 8']

출력 결과

'메모리'에 해당하는 부분만 확인하고자 한다면 행의 정보 대신 열의 정보만을 입력한다.

iphone_df['메모리']

출력 결과

 

 

 

 

loc()함수의 인자를 인덱싱을 통해 일부분만 받아올 수 있다.

iPhone8 ~ iPhone XS까지만 값을 가져와보자.

df.loc['iPhone 8':'iPhone XS']

출력 결과

df[['Face ID','출시일', '메모리']]

출력 결과

df에 직접 인덱싱하여 특정 부분만 값을 확인할 수 있다.

df.loc['iPhone 7':'iPhone X', '메모리':'Face ID']

출력 결과

 

loc()함수를 사용하는 경우 행에 해당하는 부분, 열의 해당하는 부분을 구분하여 가져온다고 생각하면 편하다.

 

'Python > pandas' 카테고리의 다른 글

pandas (6) 큰 DataFrame 다루기  (2) 2023.08.16
pandas(5) 데이터 값 수정하기  (0) 2023.08.15
pandas (4) DataFrame 수정  (0) 2023.08.14
pandas (3)  (0) 2023.08.13
pandas (1) 데이터  (1) 2023.08.11