import os
import pandas as pd
file_path = os.path.join('..', 'scratch08', 'mpg.csv')
df = pd.read_csv(file_path)
print(df)
manufacturer model displ year cyl ... drv cty hwy fl class
0 audi a4 1.8 1999 4 ... f 18 29 p compact
1 audi a4 1.8 1999 4 ... f 21 29 p compact
2 audi a4 2.0 2008 4 ... f 20 31 p compact
3 audi a4 2.0 2008 4 ... f 21 30 p compact
4 audi a4 2.8 1999 6 ... f 16 26 p compact
.. ... ... ... ... ... ... .. .. ... .. ...
229 volkswagen passat 2.0 2008 4 ... f 19 28 p midsize
230 volkswagen passat 2.0 2008 4 ... f 21 29 p midsize
231 volkswagen passat 2.8 1999 6 ... f 16 26 p midsize
232 volkswagen passat 2.8 1999 6 ... f 18 26 p midsize
233 volkswagen passat 3.6 2008 6 ... f 17 26 p midsize
[234 rows x 11 columns]
print(df.head()) # 데이터 프레임의 앞의 일부분 데이터 출력
print('shape:', df.shape) # 관측값: 234, 변수: 11
manufacturer model displ year cyl trans drv cty hwy fl class
0 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
1 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
2 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
3 audi a4 2.0 2008 4 auto(av) f 21 30 p compact
4 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
shape: (234, 11)
# DataFrame.dtypes: 각 컬럼(변수)의 데이터 타입
# pandas의 데이터 타입: object(문자열), float(실수), int(정수)
print('data types:', df.dtypes)
data types: manufacturer object
model object
displ float64
year int64
cyl int64
trans object
drv object
cty int64
hwy int64
fl object
class object
dtype: object
# 기술 통계 요약 통계량
print(df.describe())
displ year cyl cty hwy
count 234.000000 234.000000 234.000000 234.000000 234.000000
mean 3.471795 2003.500000 5.888889 16.858974 23.440171
std 1.291959 4.509646 1.611534 4.255946 5.954643
min 1.600000 1999.000000 4.000000 9.000000 12.000000
25% 2.400000 1999.000000 4.000000 14.000000 18.000000
50% 3.300000 2003.500000 6.000000 17.000000 24.000000
75% 4.600000 2008.000000 8.000000 19.000000 27.000000
max 7.000000 2008.000000 8.000000 35.000000 44.000000
# df['column_name']: DataFrame에서 특정 컬럼의 모든 데이터를 선택
displ = df['displ']
print(displ)
0 1.8
1 1.8
2 2.0
3 2.0
4 2.8
...
229 2.0
230 2.0
231 2.8
232 2.8
233 3.6
Name: displ, Length: 234, dtype: float64
import matplotlib.pyplot as plt
# df['column_name']: DataFrame에서 특정 컬럼의 모든 데이터를 선택
displ = df['displ']
print(displ)
cty = df['cty']
plt.scatter(displ, cty)
plt.show()
# DataFrame에서 행(row)을 선택할 때,
# df.iloc[행 번호(인덱스)], df.loc[행 레이블] -> i: index
print('행번호 0: ',df.iloc[0])
행번호 0: manufacturer audi
model a4
displ 1.8
year 1999
cyl 4
trans auto(l5)
drv f
cty 18
hwy 29
fl p
class compact
Name: 0, dtype: object
print(df.iloc[0:3]) # row index 0 이상 3 미만인 행 선택
manufacturer model displ year cyl trans drv cty hwy fl class
0 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
1 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
2 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
# 데이터 프레임에서 여러개의 컬럼(변수)들을 선택
cols = ['displ', 'cty', 'hwy'] # []: 리스트
print(df[cols]) # []: 인덱스 연산자
# 또는
print(df[['displ', 'cty', 'hwy']])
displ cty hwy
0 1.8 18 29
1 1.8 21 29
2 2.0 20 31
3 2.0 21 30
4 2.8 16 26
.. ... ... ...
229 2.0 19 28
230 2.0 21 29
231 2.8 16 26
232 2.8 18 26
233 3.6 17 26
[234 rows x 3 columns]
# 데이터 프레임에서 여러개의 행(관측값)과 컬럼(변수)들을 선택
# df.loc[row_labels, col_labels]: 행과 열의 레이블(이름)이므로 마지막 레이블 포함
# df.iloc[row_indices, col_indices]: 행과 열의 인덱스(숫자)이므로 마지막 인덱스 불포함
print(df.loc[0:3, cols])
print(df.iloc[0:3, 0:3])
print(df.loc[0:3, cols])
displ cty hwy
0 1.8 18 29
1 1.8 21 29
2 2.0 20 31
3 2.0 21 30
print(df.iloc[0:3, 0:3])
manufacturer model displ
0 audi a4 1.8
1 audi a4 1.8
2 audi a4 2.0
gapminder.tsv 파일을 pandas 패키지의 read_csv() 함수를 사용해서
DataFrame으로 변환.
print(df[['country']]) 은 DataFrame
print(df[['country']])
print(type(df[['country']]))
country
0 Afghanistan
1 Afghanistan
2 Afghanistan
3 Afghanistan
4 Afghanistan
... ...
1699 Zimbabwe
1700 Zimbabwe
1701 Zimbabwe
1702 Zimbabwe
1703 Zimbabwe
[1704 rows x 1 columns]
<class 'pandas.core.frame.DataFrame'>
print(df['country'])은 Series
print(df['country'])
print(type(df['country']))
0 Afghanistan
1 Afghanistan
2 Afghanistan
3 Afghanistan
4 Afghanistan
...
1699 Zimbabwe
1700 Zimbabwe
1701 Zimbabwe
1702 Zimbabwe
1703 Zimbabwe
Name: country, Length: 1704, dtype: object
<class 'pandas.core.series.Series'>