DataFrame객체는 다음과 같은 특징을 가진다.
- numpy배열과 같으나 각 열은 다른 데이터 타입을 가질수 있음
- Series는 index기준으로 데이터 생성했다면, DataFrame은 열을 기준으로 데이터 생성
- 2차원 행렬기반으로 만들어지기 때문에 행과 열 인덱스를 사용하여 하나의 데이터에 접근 가능
- 열을 추가/삭제하여 크기 변화 가능
아래 DataFrame 데이터를 보면서 무슨 말인지 알아보자
data_url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data'
df_data = pd.read_csv(data_url, sep='\s+', header=None) # csv데이터 로드
df = pd.DataFrame(df_data)
df
>
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |
0 | 0.00632 | 18.0 | 2.31 | 0 | 0.538 | 6.575 | 65.2 | 4.0900 | 1 | 296.0 | 15.3 | 396.90 | 4.98 | 24.0 |
1 | 0.02731 | 0.0 | 7.07 | 0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2 | 242.0 | 17.8 | 396.90 | 9.14 | 21.6 |
2 | 0.02729 | 0.0 | 7.07 | 0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2 | 242.0 | 17.8 | 392.83 | 4.03 | 34.7 |
3 | 0.03237 | 0.0 | 2.18 | 0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3 | 222.0 | 18.7 | 394.63 | 2.94 | 33.4 |
4 | 0.06905 | 0.0 | 2.18 | 0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3 | 222.0 | 18.7 | 396.90 | 5.33 | 36.2 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
501 | 0.06263 | 0.0 | 11.93 | 0 | 0.573 | 6.593 | 69.1 | 2.4786 | 1 | 273.0 | 21.0 | 391.99 | 9.67 | 22.4 |
502 | 0.04527 | 0.0 | 11.93 | 0 | 0.573 | 6.120 | 76.7 | 2.2875 | 1 | 273.0 | 21.0 | 396.90 | 9.08 | 20.6 |
503 | 0.06076 | 0.0 | 11.93 | 0 | 0.573 | 6.976 | 91.0 | 2.1675 | 1 | 273.0 | 21.0 | 396.90 | 5.64 | 23.9 |
504 | 0.10959 | 0.0 | 11.93 | 0 | 0.573 | 6.794 | 89.3 | 2.3889 | 1 | 273.0 | 21.0 | 393.45 | 6.48 | 22.0 |
505 | 0.04741 | 0.0 | 11.93 | 0 | 0.573 | 6.030 | 80.8 | 2.5050 | 1 | 273.0 | 21.0 | 396.90 | 7.88 | 11.9 |
506 rows × 14 columns
- numpy배열과 같으나 각 열은 다른 데이터 타입을 가질수 있음
--> 0,1,2,4,5,6,7,9,10,11,12,13열은 실수형 데이터이고 3,8열은 정수형 데이터이다.
from pandas import Series, DataFrame
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']}
my_df = pd.DataFrame(raw_data)
my_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 |
위와 같이 DataFrame을 직접 생성하려면 dict type의 데이터가 필요하다.
여기서 key는 DataFrame객체의 열이 되는데, 이는 DataFrame이 열을 기준으로 데이터를 생성한다고 생각하면 된다.
다음은 위의 raw_data의 열 이름으로 특정 열의 데이터를 추출하고
이때 raw_data에 없는 열은 NaN이 채워진다.
DataFrame(raw_data, columns=["age", 'city', "debt"])
>
age | city | debt | |
0 | 42 | San Francisco | NaN |
1 | 52 | Baltimore | NaN |
2 | 36 | Miami | NaN |
3 | 24 | Douglas | NaN |
4 | 73 | Boston | NaN |
DataFrame객체의 데이터를 추출하는 방법은 아주 다양하므로 글을 따로 작성하겠다.
'pandas' 카테고리의 다른 글
groupby( ) (0) | 2022.04.02 |
---|---|
데이터 추출 (0) | 2022.04.01 |
Series객체 (0) | 2022.03.30 |