Do it! 쉽게 배우는 파이썬 데이터 분석

04 데이터 프레임의 세계로!






목차

04-1 데이터 프레임 이해하기(link)

04-2 데이터 프레임 만들기(link)

04-3 외부 데이터 이용하기(link)

04-1 데이터 프레임 이해하기

데이터 프레임

  • 데이터를 다룰 때 가장 많이 사용하는 데이터 형태
  • 행과 열로 구성된 사각형 모양의 표처럼 생김

‘열’ 은 속성이다

  • 컬럼(column) 또는 변수(variable)라고 불림

‘행’ 은 한 사람의 정보다

  • 로(row) 또는 케이스(case)라고 불림

데이터가 크다 = 행이 많다 또는 열이 많다


04-2 데이터 프레임 만들기

데이터 입력해 데이터 프레임 만들기

import pandas as pd

df = pd.DataFrame({'name'    : ['김지훈', '이유진', '박동현', '김민지'],
                   'english' : [90, 80, 60, 70],
                   'math'    : [50, 60, 100, 20]})
df
  name  english  math
0  김지훈       90    50
1  이유진       80    60
2  박동현       60   100
3  김민지       70    20

데이터 프레임으로 분석하기

특정 변수의 값 추출하기

df['english']
0    90
1    80
2    60
3    70
Name: english, dtype: int64

변수의 값으로 합계 구하기

sum(df['english'])
300
sum(df['math'])
230

변수의 값으로 평균 구하기

sum(df['english']) / 4  # 영어 점수 평균
75.0
sum(df['math']) / 4     # 수학 점수 평균
57.5

혼자서 해보기

앞에서 익힌 기능을 활용해 분석 문제를 해결해 보세요.

Q1. 다음 표의 내용을 데이터 프레임으로 만들어 출력해 보세요.

        

Q2. 앞에서 만든 데이터 프레임을 이용해 과일의 가격 평균과 판매량 평균을
       구해 보세요.

Q1. 다음 표의 내용을 데이터 프레임으로 만들어 출력해 보세요.

# 데이터 프레임 만들기
sales = pd.DataFrame({'fruit'  : ['사과', '딸기', '수박'],
                      'price'  : [1800, 1500, 3000],
                      'volume' : [24, 38, 13]})

# 데이터 프레임 출력하기
sales
  fruit  price  volume
0    사과   1800      24
1    딸기   1500      38
2    수박   3000      13

Q2. 앞에서 만든 데이터 프레임을 이용해 과일의 가격 평균과 판매량 평균을
       구해 보세요.

sum(sales['price']) / 3   # 가격 평균 구하기
2100.0
sum(sales['volume']) / 3  # 판매량 평균 구하기
25.0

04-3 외부 데이터 이용하기

엑셀 파일 불러오기

df_exam = pd.read_excel('excel_exam.xlsx')  # 엑셀 파일을 불러와 df_exam에 할당
df_exam                                     # 출력

    id  nclass  math  english  science
0    1       1    50       98       50
1    2       1    60       97       60
2    3       1    45       86       78
3    4       1    30       98       58
4    5       2    25       80       65
5    6       2    50       89       98
6    7       2    80       90       45
7    8       2    90       78       25
8    9       3    20       98       15
9   10       3    50       98       45
10  11       3    65       65       65
11  12       3    45       85       32
12  13       4    46       98       65
13  14       4    48       87       12
14  15       4    75       56       78
15  16       4    58       98       65
16  17       5    65       68       98
17  18       5    80       78       90
18  19       5    89       68       87
19  20       5    78       83       58

엑셀 파일 불러오기

Warning

워킹 디렉터리에 불러올 파일이 있어야 함 - 확인: !cd


경로 직접 지정
df_exam = pd.read_excel('c:/easy_python/excel_exam.xlsx')

분석하기

sum(df_exam['english']) / 20
84.9
sum(df_exam['science']) / 20
59.45

len() 이용해 평균 구하기

# 변수의 값 개수 구하기
x = [1, 2, 3, 4, 5]
x
[1, 2, 3, 4, 5]
len(x)
5

len() 이용해 평균 구하기

# 데이터 프레임의 행 개수 구하기
df = pd.DataFrame({'a' : [1, 2, 3],
                   'b' : [4, 5, 6]})
df
   a  b
0  1  4
1  2  5
2  3  6
len(df)
3

len() 이용해 평균 구하기

# english 합계를 행 개수로 나누기
sum(df_exam['english']) / len(df_exam)
84.9
# science 합계를 행 개수로 나누기
sum(df_exam['science']) / len(df_exam)
59.45

엑셀 파일의 첫 번째 행이 변수명이 아니라면?

df_exam_novar = pd.read_excel('excel_exam_novar.xlsx', header = None)
df_exam_novar

Warning

None의 첫 글자 N 대문자 유의

엑셀 파일에 시트가 여러 개 있다면?

# Sheet2 시트의 데이터 불러오기
df_exam = pd.read_excel('excel_exam.xlsx', sheet_name = 'Sheet2')

# 세 번째 시트의 데이터 불러오기
df_exam = pd.read_excel('excel_exam.xlsx', sheet_name = 2)

Warning

숫자를 0부터 센다는 점 유의

CSV 파일 불러오기

df_csv_exam = pd.read_csv('exam.csv')
df_csv_exam

    id  nclass  math  english  science
0    1       1    50       98       50
1    2       1    60       97       60
2    3       1    45       86       78
3    4       1    30       98       58
4    5       2    25       80       65
5    6       2    50       89       98
6    7       2    80       90       45
7    8       2    90       78       25
8    9       3    20       98       15
9   10       3    50       98       45
10  11       3    65       65       65
11  12       3    45       85       32
12  13       4    46       98       65
13  14       4    48       87       12
14  15       4    75       56       78
15  16       4    58       98       65
16  17       5    65       68       98
17  18       5    80       78       90
18  19       5    89       68       87
19  20       5    78       83       58

데이터 프레임을 CSV 파일로 저장하기

1. 데이터 프레임 만들기

df_midterm = pd.DataFrame({'english' : [90, 80, 60, 70],
                           'math'    : [50, 60, 100, 20],
                           'nclass'  : [1, 1, 2, 2]})
df_midterm
   english  math  nclass
0       90    50       1
1       80    60       1
2       60   100       2
3       70    20       2

2. CSV 파일로 저장하기

df_midterm.to_csv('output_newdata.csv')
  • 인덱스 번호 제외하고 저장

df_midterm.to_csv('output_newdata.csv', index = False)

정리하기

# 1. 데이터 프레임 만들기
df = pd.DataFrame({'name'    : [' 김지훈 ', ' 이유진 ', ' 박동현 ', ' 김민지 '],
                   'english' : [90, 80, 60, 70],
                   'math'    : [50, 60, 100, 20]})


# 2. 외부 데이터 이용하기

#  엑셀 파일 불러오기
df_exam = pd.read_excel('excel_exam.xlsx')

# CSV  파일 불러오기
df_csv_exam = pd.read_csv('exam.csv')

# CSV 파일로 저장하기
df_midterm.to_csv('output_newdata.csv')