파이썬 λ§ˆμŠ€ν„°ν•˜κΈ° : Pandas

Posted by Euisuk's Dev Log on May 8, 2023

파이썬 λ§ˆμŠ€ν„°ν•˜κΈ° : Pandas

원본 κ²Œμ‹œκΈ€: https://velog.io/@euisuk-chung/파이썬-μ‹œκ°ν™”-λ§ˆμŠ€ν„°ν•˜κΈ°-Pandas

νŒλ‹€μŠ€(Pandas)λž€?

νŒλ‹€μŠ€(Pandas)λŠ” 파이썬 데이터 뢄석 라이브러리 쀑 ν•˜λ‚˜λ‘œ, 데이터 μ‘°μž‘, μ •μ œ, 뢄석, μ‹œκ°ν™” 등을 μœ„ν•œ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. νŒλ‹€μŠ€λŠ” μ‹œλ¦¬μ¦ˆ(Series)와 λ°μ΄ν„°ν”„λ ˆμž„(DataFrame)μ΄λΌλŠ” μžλ£Œν˜•μ„ μ΄μš©ν•˜μ—¬ 데이터λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.

νŒλ‹€μŠ€ μ„€μΉ˜

νŒλ‹€μŠ€λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ¨Όμ € μ„€μΉ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€. νŒλ‹€μŠ€λŠ” pipλ₯Ό μ΄μš©ν•˜μ—¬ μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν„°λ―Έλ„μ—μ„œ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜μ—¬ νŒλ‹€μŠ€λ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.

1
$ pip install pandas

νŒλ‹€μŠ€ 데이터 객체

DataFrame 객체

DataFrame κ°μ²΄λŠ” ν–‰κ³Ό μ—΄λ‘œ 이루어진 2차원 데이터λ₯Ό 닀루기 μœ„ν•œ κ°μ²΄μž…λ‹ˆλ‹€. 열은 각각의 λ³€μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄κ³ , 행은 각각의 κ΄€μΈ‘μΉ˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. DataFrame κ°μ²΄λŠ” μ—¬λŸ¬ κ°€μ§€ λ°©λ²•μœΌλ‘œ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

μƒμ„±ν•˜κΈ°

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 리슀트λ₯Ό μ‚¬μš©ν•˜μ—¬ DataFrame 객체 μƒμ„±ν•˜κΈ°
import pandas as pd

data = [['A', 1], ['B', 2], ['C', 3]]
df = pd.DataFrame(data, columns=['col1', 'col2'])
print(df)
# 좜λ ₯ κ²°κ³Ό
#   col1  col2
# 0    A     1
# 1    B     2
# 2    C     3

# λ”•μ…”λ„ˆλ¦¬λ₯Ό μ‚¬μš©ν•˜μ—¬ DataFrame 객체 μƒμ„±ν•˜κΈ°
data = {'col1': ['A', 'B', 'C'], 'col2': [1, 2, 3]}
df = pd.DataFrame(data)
print(df)
# 좜λ ₯ κ²°κ³Ό
#   col1  col2
# 0    A     1
# 1    B     2
# 2    C     3

# CSV νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ DataFrame 객체 μƒμ„±ν•˜κΈ°
df = pd.read_csv('data.csv')
print(df)

μ„ νƒν•˜κΈ°

DataFrame κ°μ²΄μ—μ„œλŠ” μ—΄μ΄λ‚˜ 행을 μ„ νƒν•˜μ—¬ 데이터λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
3
4
5
6
7
# μ—΄ μ„ νƒν•˜κΈ°
df['col1']
df[['col1', 'col2']]

# ν–‰ μ„ νƒν•˜κΈ°
df.loc[0]
df.loc[[0, 1, 2]]

μ‘°μž‘ν•˜κΈ°

DataFrame κ°μ²΄μ—μ„œλŠ” 데이터λ₯Ό μΆ”κ°€, μ‚­μ œ, μˆ˜μ •ν•˜λŠ” λ“± λ‹€μ–‘ν•œ μ‘°μž‘μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# μ—΄ μΆ”κ°€ν•˜κΈ°
df['col3'] = [4, 5, 6]

# μ—΄ μ‚­μ œν•˜κΈ°
df.drop('col3', axis=1, inplace=True)

# ν–‰ μΆ”κ°€ν•˜κΈ°
df.loc[3] = ['D', 4, 5]

# ν–‰ μ‚­μ œν•˜κΈ°
df.drop(3, inplace=True)

# μ—΄ 이름 λ³€κ²½ν•˜κΈ°
df.rename(columns={'col1': 'new_col1'}, inplace=True)

Series 객체

Series κ°μ²΄λŠ” μΈλ±μŠ€μ™€ κ°’μœΌλ‘œ 이루어진 1차원 데이터λ₯Ό 닀루기 μœ„ν•œ κ°μ²΄μž…λ‹ˆλ‹€. Series κ°μ²΄λŠ” DataFrame κ°μ²΄μ—μ„œ 열을 μ„ νƒν•˜μ—¬ μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μƒμ„±ν•˜κΈ°

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 리슀트λ₯Ό μ‚¬μš©ν•˜μ—¬ Series 객체 μƒμ„±ν•˜κΈ°
import pandas as pd

data = [1, 2, 3]
s = pd.Series(data, index=['a', 'b', 'c'])
print(s)
# 좜λ ₯ κ²°κ³Ό
# a    1
# b    2
# c    3
# dtype: int64

# λ”•μ…”λ„ˆλ¦¬λ₯Ό μ‚¬μš©ν•˜μ—¬ Series 객체 μƒμ„±ν•˜κΈ°
data = {'a': 1, 'b': 2, 'c': 3}
s = pd.Series(data)
print(s)
# 좜λ ₯ κ²°κ³Ό
# a    1
# b    2
# c    3
# dtype: int64

μ„ νƒν•˜κΈ°

Series κ°μ²΄μ—μ„œλŠ” μΈλ±μŠ€λ‚˜ μœ„μΉ˜λ₯Ό μ΄μš©ν•˜μ—¬ 데이터λ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€

νŒλ‹€μŠ€ κΈ°λ³Έ μ‚¬μš©λ²•

데이터 뢈러였기

νŒλ‹€μŠ€μ—μ„œλŠ” λ‹€μ–‘ν•œ ν˜•νƒœμ˜ 데이터λ₯Ό 뢈러올 수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν‘œμ μΈ 데이터 ν˜•μ‹μœΌλ‘œλŠ” CSV, Excel, SQL 등이 μžˆμŠ΅λ‹ˆλ‹€.

CSV 파일 뢈러였기

CSV(Comma-Separated Values) νŒŒμΌμ€ μ‰Όν‘œλ‘œ κ΅¬λΆ„λœ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 파일 ν˜•μ‹μž…λ‹ˆλ‹€. νŒλ‹€μŠ€μ—μ„œλŠ” read_csv() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ CSV νŒŒμΌμ„ 뢈러올 수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
3
4
import pandas as pd

# CSV 파일 뢈러였기
df = pd.read_csv('data.csv')

Excel 파일 뢈러였기

Excel νŒŒμΌμ€ μŠ€ν”„λ ˆλ“œμ‹œνŠΈ ν”„λ‘œκ·Έλž¨μ—μ„œ μƒμ„±ν•œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 파일 ν˜•μ‹μž…λ‹ˆλ‹€. νŒλ‹€μŠ€μ—μ„œλŠ” read_excel() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ Excel νŒŒμΌμ„ 뢈러올 수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
3
4
import pandas as pd

# Excel 파일 뢈러였기
df = pd.read_excel('data.xlsx')

데이터 μ‚΄νŽ΄λ³΄κΈ°

데이터λ₯Ό 뢈러온 ν›„μ—λŠ” λ°μ΄ν„°μ˜ ꡬ쑰와 λ‚΄μš©μ„ μ‚΄νŽ΄λ³Ό ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. νŒλ‹€μŠ€μ—μ„œλŠ” λ‹€μŒκ³Ό 같은 ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 데이터λ₯Ό μ‚΄νŽ΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°μ΄ν„°ν”„λ ˆμž„ 정보 ν™•μΈν•˜κΈ°

info() ν•¨μˆ˜λŠ” λ°μ΄ν„°ν”„λ ˆμž„μ˜ 정보λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€. λ°μ΄ν„°ν”„λ ˆμž„μ˜ 크기, 데이터 νƒ€μž…, 결츑치 λ“±μ˜ 정보λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# λ°μ΄ν„°ν”„λ ˆμž„ 정보 ν™•μΈν•˜κΈ°
df.info()

λ°μ΄ν„°ν”„λ ˆμž„ 일뢀 데이터 보기

head() ν•¨μˆ˜λŠ” λ°μ΄ν„°ν”„λ ˆμž„μ˜ 첫 n행을 좜λ ₯ν•©λ‹ˆλ‹€. n은 인자둜 전달될 수 μžˆμŠ΅λ‹ˆλ‹€. 기본값은 5μž…λ‹ˆλ‹€.

1
2
# λ°μ΄ν„°ν”„λ ˆμž„ 일뢀 데이터 보기
df.head()

λ°μ΄ν„°ν”„λ ˆμž„ μš”μ•½ ν†΅κ³„λŸ‰ 보기

describe() ν•¨μˆ˜λŠ” λ°μ΄ν„°ν”„λ ˆμž„μ˜ μš”μ•½ ν†΅κ³„λŸ‰μ„ 좜λ ₯ν•©λ‹ˆλ‹€. 각 μ—΄μ˜ 개수, 평균, ν‘œμ€€νŽΈμ°¨, μ΅œμ†Œκ°’, 25% λ°±λΆ„μœ„μˆ˜, 쀑앙값, 75% λ°±λΆ„μœ„μˆ˜, μ΅œλŒ€κ°’ λ“±μ˜ 정보λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# λ°μ΄ν„°ν”„λ ˆμž„ μš”μ•½ ν†΅κ³„λŸ‰ 보기
df.describe()

데이터 μ„ νƒν•˜κΈ°

λ°μ΄ν„°ν”„λ ˆμž„μ—μ„œλŠ” νŠΉμ •ν•œ μ—΄μ΄λ‚˜ 행을 μ„ νƒν•˜μ—¬ 데이터λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ—΄ μ„ νƒν•˜κΈ°

νŠΉμ •ν•œ 열을 선택할 λ•ŒλŠ” λ°μ΄ν„°ν”„λ ˆμž„μ˜ μ—΄ 이름을 μ‚¬μš©ν•©λ‹ˆλ‹€.

1
2
# μ—΄ μ„ νƒν•˜κΈ°
df['μ—΄ 이름']

μ—¬λŸ¬ 개의 열을 선택할 λ•ŒλŠ” 리슀트 ν˜•νƒœλ‘œ μ—΄ 이름을 μ „λ‹¬ν•©λ‹ˆλ‹€.

1
2
# μ—¬λŸ¬ 개의 μ—΄ μ„ νƒν•˜κΈ°
df[['μ—΄ 이름 1', 'μ—΄ 이름 2', ...]]

ν–‰ μ„ νƒν•˜κΈ°

νŠΉμ •ν•œ 행을 선택할 λ•ŒλŠ” loc[] ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. loc[] ν•¨μˆ˜λŠ” ν–‰μ˜ 이름 λ˜λŠ” 인덱슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 행을 μ„ νƒν•©λ‹ˆλ‹€.

1
2
# ν–‰ μ„ νƒν•˜κΈ°
df.loc[ν–‰ 이름 λ˜λŠ” 인덱슀]

μ—¬λŸ¬ 개의 행을 선택할 λ•ŒλŠ” 리슀트 ν˜•νƒœλ‘œ ν–‰ 이름 λ˜λŠ” 인덱슀λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€.

1
2
# μ—¬λŸ¬ 개의 ν–‰ μ„ νƒν•˜κΈ°
df.loc[[ν–‰ 이름 λ˜λŠ” 인덱슀 1, ν–‰ 이름 λ˜λŠ” 인덱슀 2, ...]]

데이터 ν•„ν„°λ§ν•˜κΈ°

λ°μ΄ν„°ν”„λ ˆμž„μ—μ„œλŠ” νŠΉμ •ν•œ 쑰건을 λ§Œμ‘±ν•˜λŠ” λ°μ΄ν„°λ§Œ μ„ νƒν•˜μ—¬ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

쑰건 ν•„ν„°λ§ν•˜κΈ°

쑰건 필터링은 [] μ—°μ‚°μžμ™€ 쑰건식을 μ΄μš©ν•˜μ—¬ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

1
2
# 쑰건 ν•„ν„°λ§ν•˜κΈ°
df[쑰건식]

예λ₯Ό λ“€μ–΄, 2010λ…„ μ΄ν›„μ˜ λ°μ΄ν„°λ§Œ μ„ νƒν•˜κ³  싢을 λ•ŒλŠ” λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# 2010λ…„ μ΄ν›„μ˜ λ°μ΄ν„°λ§Œ μ„ νƒν•˜κΈ°
df[df['Year'] >= 2010]

논리 μ—°μ‚°μž μ΄μš©ν•˜κΈ°

&(and)와 |(or) μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜μ—¬ 논리 연산을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
3
# 논리 μ—°μ‚°μž μ΄μš©ν•˜κΈ°
df[(쑰건식 1) & (쑰건식 2)]
df[(쑰건식 1) | (쑰건식 2)]

예λ₯Ό λ“€μ–΄, 2010λ…„ μ΄ν›„μ΄λ©΄μ„œ κΈˆλ©”λ‹¬ 이상을 νšλ“ν•œ λ°μ΄ν„°λ§Œ μ„ νƒν•˜κ³  싢을 λ•ŒλŠ” λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# 2010λ…„ μ΄ν›„μ΄λ©΄μ„œ κΈˆλ©”λ‹¬ 이상을 νšλ“ν•œ λ°μ΄ν„°λ§Œ μ„ νƒν•˜κΈ°
df[(df['Year'] >= 2010) & (df['Medal'] == 'Gold')]

isin() ν•¨μˆ˜ μ΄μš©ν•˜κΈ°

isin() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ νŠΉμ •ν•œ 값이 ν¬ν•¨λœ λ°μ΄ν„°λ§Œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# isin() ν•¨μˆ˜ μ΄μš©ν•˜κΈ°
df[df['μ—΄ 이름'].isin([κ°’1, κ°’2, ...])]

예λ₯Ό λ“€μ–΄, β€˜KOR’, β€˜USA’, β€˜JPN’ κ΅­κ°€μ˜ λ°μ΄ν„°λ§Œ μ„ νƒν•˜κ³  싢을 λ•ŒλŠ” λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# 'KOR', 'USA', 'JPN' κ΅­κ°€μ˜ λ°μ΄ν„°λ§Œ μ„ νƒν•˜κΈ°
df[df['NOC'].isin(['KOR', 'USA', 'JPN'])]

데이터 κ·Έλ£Ήν™”ν•˜κΈ°

λ°μ΄ν„°ν”„λ ˆμž„μ—μ„œλŠ” νŠΉμ •ν•œ 기쀀에 따라 데이터λ₯Ό κ·Έλ£Ήν™”ν•˜μ—¬ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

groupby() ν•¨μˆ˜ μ΄μš©ν•˜κΈ°

groupby() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ νŠΉμ •ν•œ 열을 κΈ°μ€€μœΌλ‘œ 데이터λ₯Ό κ·Έλ£Ήν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# groupby() ν•¨μˆ˜ μ΄μš©ν•˜κΈ°
df.groupby('μ—΄ 이름')

groupby() ν•¨μˆ˜λ‘œ κ·Έλ£Ήν™”ν•œ λ°μ΄ν„°λŠ” 각 그룹에 λŒ€ν•œ 정보λ₯Ό λ‹΄κ³  μžˆλŠ” κ°μ²΄μž…λ‹ˆλ‹€. 이λ₯Ό λ°”νƒ•μœΌλ‘œ λ‹€μ–‘ν•œ 처리λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

집계 ν•¨μˆ˜ μ΄μš©ν•˜κΈ°

κ·Έλ£Ήν™”λœ 데이터에 λŒ€ν•΄ 집계 ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ λ‹€μ–‘ν•œ 처리λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# 집계 ν•¨μˆ˜ μ΄μš©ν•˜κΈ°
κ·Έλ£Ήν™”λœ 데이터.μ§‘κ³„ν•¨μˆ˜()

κ·Έλ£Ήν™”λœ 데이터에 λŒ€ν•΄ μ μš©ν•  수 μžˆλŠ” 집계 ν•¨μˆ˜λŠ” λ‹€μ–‘ν•©λ‹ˆλ‹€. 일반적으둜 μ‚¬μš©λ˜λŠ” 집계 ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • count() : λ°μ΄ν„°μ˜ 개수λ₯Ό μ„ΈλŠ” ν•¨μˆ˜
  • sum() : λ°μ΄ν„°μ˜ 합을 κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • mean() : λ°μ΄ν„°μ˜ 평균을 κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • median() : λ°μ΄ν„°μ˜ 쀑앙값을 κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • min() : λ°μ΄ν„°μ˜ μ΅œμ†Œκ°’μ„ κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • max() : λ°μ΄ν„°μ˜ μ΅œλŒ€κ°’μ„ κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • std() : λ°μ΄ν„°μ˜ ν‘œμ€€νŽΈμ°¨λ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜
  • var() : λ°μ΄ν„°μ˜ 뢄산을 κ΅¬ν•˜λŠ” ν•¨μˆ˜
1
2
3
4
5
6
7
8
9
# 집계 ν•¨μˆ˜ μ΄μš©ν•˜κΈ°
κ·Έλ£Ήν™”λœ 데이터.count()
κ·Έλ£Ήν™”λœ 데이터.sum()
κ·Έλ£Ήν™”λœ 데이터.mean()
κ·Έλ£Ήν™”λœ 데이터.median()
κ·Έλ£Ήν™”λœ 데이터.min()
κ·Έλ£Ήν™”λœ 데이터.max()
κ·Έλ£Ήν™”λœ 데이터.std()
κ·Έλ£Ήν™”λœ 데이터.var()

예λ₯Ό λ“€μ–΄, ꡭ가별 κΈˆλ©”λ‹¬ 수의 합계λ₯Ό κ΅¬ν•˜κ³  싢을 λ•ŒλŠ” λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1
2
# ꡭ가별 κΈˆλ©”λ‹¬ 수의 합계 κ΅¬ν•˜κΈ°
df[df['Medal'] == 'Gold'].groupby('NOC')['Medal'].count()

데이터 μ •λ ¬ν•˜κΈ°

λ°μ΄ν„°ν”„λ ˆμž„μ—μ„œλŠ” νŠΉμ •ν•œ 열을 κΈ°μ€€μœΌλ‘œ 데이터λ₯Ό μ •λ ¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 기본적으둜 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λ˜λ©°, λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λ €λ©΄ ascending=False μ˜΅μ…˜μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

1
2
3
4
5
# μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜κΈ°
df.sort_values('μ—΄ 이름')

# λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜κΈ°
df.sort_values('μ—΄ 이름', ascending=False)

예λ₯Ό λ“€μ–΄, μ•„λž˜μ™€ 같은 λ°μ΄ν„°ν”„λ ˆμž„μ΄ μžˆλ‹€κ³  κ°€μ •ν•΄ λ΄…μ‹œλ‹€.

1
2
3
4
5
6
7
import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'city': ['New York', 'Paris', 'London', 'San Francisco']}
df = pd.DataFrame(data)
print(df)
1
2
3
4
5
       name  age           city
0     Alice   25       New York
1       Bob   32          Paris
2   Charlie   18         London
3     David   47  San Francisco

이제 λ‚˜μ΄λ₯Ό κΈ°μ€€μœΌλ‘œ 데이터λ₯Ό μ •λ ¬ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

1
df.sort_values('age')
1
2
3
4
5
       name  age           city
2   Charlie   18         London
0     Alice   25       New York
1       Bob   32          Paris
3     David   47  San Francisco

Index μ΄ˆκΈ°ν™”ν•˜κΈ°

λ°μ΄ν„°ν”„λ ˆμž„μ—μ„œλŠ” reset_index() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 인덱슀λ₯Ό μ΄ˆκΈ°ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ κΈ°μ‘΄ μΈλ±μŠ€λŠ” μ—΄λ‘œ μΆ”κ°€λ©λ‹ˆλ‹€.

1
2
# 인덱슀 μ΄ˆκΈ°ν™”ν•˜κΈ°
df.reset_index()

예λ₯Ό λ“€μ–΄, μ•„λž˜μ™€ 같은 λ°μ΄ν„°ν”„λ ˆμž„μ΄ μžˆλ‹€κ³  κ°€μ •ν•΄ λ΄…μ‹œλ‹€.

1
2
3
4
5
6
7
8
import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'city': ['New York', 'Paris', 'London', 'San Francisco']}
df = pd.DataFrame(data)
df.set_index('name', inplace=True)
print(df)
1
2
3
4
5
6
         age           city
name                      
Alice     25       New York
Bob       32          Paris
Charlie   18         London
David     47  San Francisco

이제 인덱슀λ₯Ό μ΄ˆκΈ°ν™”ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

1
df.reset_index()
1
2
3
4
5
      name  age           city
0    Alice   25       New York
1      Bob   32          Paris
2  Charlie   18         London
3    David   47  San Francisco

κ²°λ‘ 

더 λ§Žμ€ 데이터 뢄석 κΈ°λŠ₯κ³Ό 기법이 μžˆμ§€λ§Œ, 기본적인 λ‚΄μš©μ„ λ‹€λ£¨λŠ” 것이기 λ•Œλ¬Έμ— μ΄μƒμœΌλ‘œ 기본적인 νŒλ‹€μŠ€ μ‚¬μš©λ²•μ— λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€. νŒλ‹€μŠ€λŠ” 맀우 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— ν•œ λ²ˆμ— λͺ¨λ“  λ‚΄μš©μ„ μ΅νžˆκΈ°λŠ” μ–΄λ ΅μ§€λ§Œ, 자주 μ‚¬μš©ν•˜λŠ” κΈ°λŠ₯을 μˆ™λ‹¬ν•˜κ³ , ν•„μš”ν•  λ•Œλ§ˆλ‹€ κ²€μƒ‰ν•˜μ—¬ μ‚¬μš©ν•˜λ©΄ νŒλ‹€μŠ€λ₯Ό 효과적으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이외에도 μ•žμœΌλ‘œ μ‚΄νŽ΄λ³Ό 데이터 μ‹œκ°ν™”λ₯Ό μœ„ν•œ matplotlib, seaborn, 그리고 μ•žμ—μ„œ μ‚΄νŽ΄λ³Έ 데이터 μ „μ²˜λ¦¬λ₯Ό μœ„ν•œ numpy λ“± λ‹€μ–‘ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μžˆμœΌλ‹ˆ, ν•„μš”ν•œ κΈ°λŠ₯에 맞게 μ μ ˆν•œ 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터 뢄석을 μˆ˜ν–‰ν•΄ λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.



-->