데이터분석 공부/Python
[Python] Pandas - ①
JEONGHEON
2022. 1. 24. 14:30
오늘은 말씀드린 대로 NumPy에 이어서 Pandas 라이브러리에 대해 알아보겠습니다!
Pandas 라이브러리는 대표적인 데이터 분석 라이브러리이며
행과 열로 이루어진 데이터 객체를 만들고 다룰 수 있어
안정적으로 대용량의 데이터를 처리하는 데 매우 편리하다는 장점이 있습니다.
이번에도 마찬가지로 주피터 노트북을 이용했으며 이용하고 싶으시다면
2022.01.22 - [데이터 분석 공부하기/Python] - [Python] Jupyter Notebook 설치 및 실행
[Python] Jupyter Notebook 설치 및 실행
오늘은 간단하게 Anaconda를 설치하여 주피터 노트북을 실행시키는 방법을 알아볼게요! 우선 아나콘다는 수학과 과학 분야에서 사용되는 여러 패키지들을 묶어 놓은 파이썬 배포판이고 대표적으
tnqkrdmssjan.tistory.com
^^^^
여기를 눌러주시면 됩니다!
그럼 시작해 볼까요?
import pandas as pd # Pandas 불러오기
import numpy as np # NumPy 불러오기
1. NumPy를 사용한 데이터 프레임 생성
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
df = pd.DataFrame(data, columns = ['A','B','C'])
df

1-2. dictionary를 사용한 데이터 프레임 생성
data = {
"Name": ['Kim', 'Choi', 'Lee', 'Park', 'Kim', 'Shin'],
"Age": [15, 19, 17, 18, 17, 16],
"Score": [90.5, 78.0, 92.0, 86.5, 90.0, 83.5]
}
df = pd.DataFrame(data, index = ['one', 'two', 'three', 'four', 'five', 'six'])
df

2. 데이터 확인
df.head() # default : 5

df.tail(2)

df.index # 행 index 출력
>>> Index(['one', 'two', 'three', 'four', 'five', 'six'], dtype='object')
df.columns # 칼럼명 출력
>>> Index(['Name', 'Age', 'Score'], dtype='object')
df.values # 값 출력
>>> array([['Kim', 15, 90.5],
['Choi', 19, 78.0],
['Lee', 17, 92.0],
['Park', 18, 86.5],
['Kim', 17, 90.0],
['Shin', 16, 83.5]], dtype=object)
df.info() # 요약 정보 출력
>>> <class 'pandas.core.frame.DataFrame'>
Index: 6 entries, one to six
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 6 non-null object
1 Age 6 non-null int64
2 Score 6 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 192.0+ bytes
df.describe() # 데이터프레임 열의 간단한 통계 값 출력

3-1. 특정 column의 값만 추출
df['Score'] # 또는 df.Score
>>> one 90.5
two 78.0
three 92.0
four 86.5
five 90.0
six 83.5
Name: Score, dtype: float64
df[['Name', 'Score']]

3-2. 특정 행 범위의 값만 추출
df[0 : 3] # df[시작인데스 : 끝인덱스 + 1]

3-3. 이름을 이용하여 추출 : .loc
df.loc['one'] # 'one' 인덱스에 해당하는 모든 칼럼 값 추출
>>> Name Kim
Age 15
Score 90.5
Name: one, dtype: object
df.loc[:, ['Name', 'Score']]

df.loc['two':'five', ['Age', 'Score']]

3-4. 위치를 이용하여 추출 : .iloc
df.iloc[3] # 첫 번째 인덱스 번호는 0
>>> Name Park
Age 18
Score 86.5
Name: four, dtype: objec
df.iloc[2:4, 0:2] # 세 번째, 네 번째 행과 첫 번째, 두 번째 열 추출

df.iloc[[0, 2, 4], [0, 2]]

df.iloc[1:3, :]

df.iloc[:, 1:3]

3-5. 조건을 이용하여 추출
df[df['Score'] >= 90]

df.loc[df['Name'] == "Kim", ['Name', 'Age']]

df.loc[df['Name'].isin(['Park', 'Kim']), :]

df.loc[(df['Age'] > 16) & (df['Score'] > 90), :] # & : and , | : or

4-1. 값 변경
df.loc['one', 'Age'] = 18
df

4-2. 열 추가
df['Score2'] = [70.5, np.nan, 85.0, 78.5, np.nan, 82.5]
df

df['diff_score'] = df['Score'] - df['Score2'] # 파생변수 생성
df

4-3. 열 삭제
df2 = df.copy() # 데이터프레임 복사
del df2['diff_score'] # 해당 열 삭제
df2

# 또는
df2.drop('Score2', axis = 1) # 기본적으로 저장 X

drop 함수는 특정 행 또는 열을 drop 한 데이터 프레임을 반환하므로 기존의 데이터 프레임에는 영향을 미치지 않는다. 즉, 기존의 데이터 프레임이 변경되도록 하려면 inplace = True 인자를 추가해야 한다.
4-4. 행 추가
new_data = {'Name': 'Lee', 'Age': 17, 'Score': 88.5}
df2.append(new_data, ignore_index = True) # 기본적으로 저장 X

4-5. 행 삭제
df2.drop(['one', 'two']) # 기본적으로 저장 X

Pandas 라이브러리는 2개로 나눠서 진행하겠습니다.
그럼 2편에서 만나요~
