[Pandas 기초] 1. DataFrame 생성 및 불러오기
Series와 DataFrame에 대해 간단하게 알아 본 후, Python Library 중 하나인 Pandas에서 Series와 DataFrame을 생성 및 불러오는 방법을 알아보자.
Pandas
- 구조화된 데이터 처리를 지원하는 Python 라이브러리
- 고성능 array 계산 라이브러리인 Numpy와 통합하여, 강력한 스프레드시트처리 기능을 제공
- 인덱싱, 연산용 함수, 전처리 함수 등을 제공함
- 데이터 처리 및 통계 분석을 위해 사용
Series
- 하나의 정보에 대한 데이터들의 집합
- index가 추가된 numpy
- 데이터 프레임에서 하나의 열을 떼어낸 것.(1차원)
- Pandas의 Series 함수를 통해 생성할 수 있음
1
2
3
4
5
6
7
from pandas import Series, DataFrame
import pandas as pd
import numpy as np
list_data = [1,2,3,4,5]
example_obj = Series(data = list_data)
example_obj
1
2
3
4
5
6
0 1
1 2
2 3
3 4
4 5
dtype: int64
1
2
3
4
list_data = [1,2,3,4,5]
list_name = ["a","b","c","d","e"]
example_obj = Series(data = list_data, index = list_name)
example_obj
1
2
3
4
5
6
a 1
b 2
c 3
d 4
e 5
dtype: int64
1
2
3
dic_data = {"a":1 , "b":2, "c":3, "d":4, "e":5}
example_obj = Series(dic_data, dtype=np.float32, name="example_data")
example_obj
1
2
3
4
5
6
a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
Name: example_data, dtype: float32
1
example_obj["a"]
1
1.0
1
example_obj.values
1
array([1., 2., 3., 4., 5.], dtype=float32)
1
example_obj.index
1
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
1
2
3
example_obj.name = "number"
example_obj.index.name = "alphabet"
example_obj
1
2
3
4
5
6
7
alphabet
a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
Name: number, dtype: float32
DataFrame
- 데이터 분석에서 가장 중요한 데이터 구조
- 관계형 데이터베이스의 테이블 또는 엑셀 시트와 같은 형태(2차원 구조)
- 변수들의 집합 -> 각 열을 변수라고 부름
- 행 -> 의미 : 분석단위, 다른 말로 : 관측치, 샘플
- 열 -> 의미 : 정보, 다른 말로 : 변수(feature, target)
- Pandas 사용 목적이 데이터프레임을 사용하기 위한 목적으로 봐도 된다.
- 데이터를 처리, 조회, 분석하는 가장 효율적인 방법이 데이터프레임을 사용하는 것
- 일반적으로 접하게 되는 테이블 형태, 엑셀 형태로 생각하면 된다.
- 직접 만들 수 있으나 보통은 csv 파일, 엑셀 파일 또는 DB에서 온다.
DataFrame 생성
1
2
3
4
5
6
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'],
'age': [42, 52, 36, 24, 73],
'city': ['San Francisco', 'Baltimore', 'Miami', 'Douglas', 'Boston']}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'city'])
df
first_name | last_name | age | city | |
---|---|---|---|---|
0 | Jason | Miller | 42 | San Francisco |
1 | Molly | Jacobson | 52 | Baltimore |
2 | Tina | Ali | 36 | Miami |
3 | Jake | Milner | 24 | Douglas |
4 | Amy | Cooze | 73 | Boston |
CSV파일 읽어오기
csv 파일로 부터 가져오기
1
2
3
4
5
# 데이터 읽어오기
data = pd.read_csv('airquality_simple.csv')
# 상위 3행만 확인
data.head(3)
Ozone | Solar.R | Wind | Temp | Month | Day | |
---|---|---|---|---|---|---|
0 | 41 | 190.0 | 7.4 | 67 | 5 | 1 |
1 | 36 | 118.0 | 8.0 | 72 | 5 | 2 |
2 | 12 | 149.0 | 12.6 | 74 | 5 | 3 |
url로 가져오기
1
2
3
4
5
6
# 데이터 읽어오기
path = 'https://raw.githubusercontent.com/DA4BAM/dataset/master/Attrition_simple2.CSV'
data = pd.read_csv(path)
# 상위 3개 확인
data.head(3)
Attrition | Age | DistanceFromHome | EmployeeNumber | Gender | JobSatisfaction | MaritalStatus | MonthlyIncome | OverTime | PercentSalaryHike | TotalWorkingYears | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 33 | 7 | 817 | Male | 3 | Married | 11691 | No | 11 | 14 |
1 | 0 | 35 | 18 | 1412 | Male | 4 | Single | 9362 | No | 11 | 10 |
2 | 0 | 42 | 6 | 1911 | Male | 1 | Married | 13348 | No | 13 | 18 |
This post is licensed under CC BY 4.0 by the author.