🔎 판다스(Pandas) 사용하기
판다스를 사용하기 위해서는 해당 라이브러리를 import 해줘야 한다.
import pandas as pd
# import: 특정 라이브러리를 스크립트로 호출
# as: 해당 라이브러리 이름을 줄여 사용
🔎 데이터 불러오기
데이터 전처리를 위해서는 데이터가 저장되어 있는 파일을 불러와서 읽어야 한다.
#데이터 불러오기
df1=pd.read_csv('Data.csv')
# Data.csv 파일 불러와 df1에 저장
🔎 데이터 확인하기
☑️ `Index`
데이터의 범위를 확인하기 위해 사용한다.
df1.index
# 함수에서 소괄호를 안 쓰는 경우: 데이터의 구조를 확인하는 경우
# 결과: RangeIndex(start=0, stop=51301, step=1)
☑️ `Columns`
데이터의 항목(열)을 확인한다.
df1.columns
# 결과: Index(['Column1', 'Column2', 'Column3', 'Column4', 'Column5'], dtype='object')
☑️ `.info()`
데이터의 구조와 타입을 확인한다.
결측값(Missing Value) 등을 확인할 때 사용한다.
Input
df1.info()
# Non-Null Count: 결측값이 아닌, 존재하는 데이터의 개수
Output
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 51301 entries, 0 to 51300
Data columns (total 20 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Column1 51301 non-null int64
1 Column2 51301 non-null int64
2 Column3 51301 non-null object
3 Column4 51301 non-null object
4 Column5 51301 non-null object
dtypes: float64(2), int64(2), object(1)
memory usage: 7.8+ MB
🔎 데이터 전처리
데이터 핸들링 기법에는 다음과 같은 것들이 있다.
- 데이터 추출 (행 단위 / 열 단위)
- 데이터 정렬
- 데이터 필터
- 데이터 요약 (Pivot)
- 날짜 데이터 처리
- 파생 변수: 기존에 있는 데이터 항목을 이용해 새로운 항목을 만드는 것
- 데이터 재구조화 / 병합
☑️ 데이터 추출 (행 단위)
✔️ `.head()`
상위 n개의 데이터를 추출할 때 사용한다.
만약 공백으로 줄 경우, 디폴트 값으로 5개를 추출한다.
df1.head(3)
✔️ `.tail()`
하위 n개의 데이터를 추출할 때 사용한다.
df1.tail(3)
✔️ `.iloc[n:m]`
특정 범위의 데이터를 확인할 때 사용한다.
n번째부터 m번 이전까지의 데이터를 추출한다.
df1.iloc[50:100]
☑️ 데이터 추출 (열 단위)
✔️ Column 이름으로 추출
df1['Column1']
인덱스와 `Column1` 열의 값들을 출력한다.
0 96900
1 102900
2 96900
3 66900
4 66900
...
51296 96900
51297 96900
51298 120900
51299 96900
51300 96900
Name: Amount_Month, Length: 51301, dtype: int64
✔️ 평균값 계산: `.mean()`
하나의 열의 평균값을 계산한다.
df1['Column1'].mean()
# 결과: 93994.97428900021
🔎 Pandas 데이터 구조
판다스 데이터 구조에는 Series(순열) 구조와 Data Frame 구조가 있다.
Series 구조는 `index - value`가 짝지어져 있고,
Data Frame 구조는 `index - column - value` 값으로 이루어져있다.
Series가 여러 줄 모이면 하나의 Data Frame이 구성되는 것이다.
🔽 Series 구조
0 96900
1 102900
2 96900
3 66900
4 66900
...
51296 96900
51297 96900
51298 120900
51299 96900
51300 96900
Name: Amount_Month, Length: 51301, dtype: int64
🔽 Data Frame 구조
Index Amount_Month Channel Sales_Type
0 96900 영업방판 렌탈
1 102900 영업방판 렌탈
2 96900 홈쇼핑/방송 렌탈
3 66900 재계약 멤버십
4 66900 재계약 멤버십
... ... ... ...
51296 96900 대형마트A 렌탈
51297 96900 대형마트A 렌탈
51298 120900 영업방판 렌탈
51299 96900 홈쇼핑/방송 렌탈
51300 96900 홈쇼핑/방송 렌탈
51301 rows × 3 columns
위 데이터 프레임에서 `Amount_Mont`와 `Channel`만 뽑아서, 상위 10개의 데이터만 보고 싶다고 하면 아래와 같이 작성하면 된다.
df1[['Amount_Month', 'Channel']].head(10)
그럼 다음과 같은 결과를 얻을 수 있다.
🔎 데이터 정렬
☑️ 오름차순 정렬
`.sort_values(by='Column_Name')`
정렬하고 싶은 열의 이름을 인자로 넘겨서 오름차순으로 정렬할 수 있다.
df1.sort_values(by='Amount_Month')
☑️ 내림차순 정렬
`.sort_values(by='Column_Name', ascending=False)`
내림차순으로 정렬하고 싶으면 `ascending` 값을 False로 주면 된다. (디폴트 값: True)
df1.sort_values(by='Amount_Month', ascending=False)
☑️ 여러 개의 컬럼을 기준으로 정렬
만약 첫 번재 정렬 기준 컬럼의 값이 같으면, 두 번째 기준 컬럼 값으로 정렬할 수 있다.
이 경우, `by` 값을 리스트 형태로 주면된다.
그럼 앞에 나온 컬럼 순서대로 우선순위를 부여하여 정렬한다.
df1.sort_values(by=['Amount_Month', 'Age'], ascending=False)
이 경우, `Amount_Month` 값이 높으면서, `Age` 가 높은 순서대로 정렬한다.
✔️ 각 컬럼마다 오름차순/내림차순 다르게 부여하기
만약, `Amount_Month` 컬럼은 오름차순, `Age` 컬럼은 내림차순으로 정렬하고 싶다면 `ascending` 값도 Boolean으로 이루어진 리스트로 주면 된다.
df1.sort_values(by=['Amount_Month', 'Age'], ascending=[True, False])
이 경우, `Amount_Month` 값이 낮으면서, `Age` 값은 높은 수서대로 정렬한다.
🔎 데이터 프레임을 파일로 저장
☑️ 엑셀 파일로 저장: `.to_excel('file.xlsx')`
결과로 추출된 데이터 프레임을 엑셀 파일로 저장하고 싶으면 `.to_excel('file.xlsx')`를 사용하면 된다.
함수의 인자로는 파일 이름을 넘겨주면 된다.
df1.sort_values(by=['Amount_Month', 'Overdue_count'],
ascending=[False, True]).head(50).to_excel('result.xlsx')
`Amount_Month`이 높고, `Overdue_count`이 낮은 순서대로 정렬해서 `result.xlsx` 파일에 저장한다.
🔎 데이터 필터 (Filter)
기존 데이터 프레임에서 원하는 조건을 만족시키는 것들만 추출할 수 있다.
데이터 분석에서는 범주형 데이터 항목의 특성에 따라 다른 데이터의 통계적 특성이 달라질 수 있기 때문에 원하는 조건을 만족하는 항목만 뽑아내서 볼 수 있어야 한다.
☑️ 특정 조건에 대해 True를 만족하는 항목 추출: `.loc[ ]`
cond1 = (df1['Amount_Month'] >= 100000) # 월랜탈비용이 10만원 이상인 조건
df1.loc[cond1] # 해당 조건에 대한 데이터를 추출
# loc[(조건식)]: 특정 조건 (True)에 해당하는 데이터를 추출
이 경우, `df1` 데이터 중 `Amount_Month` 값이 10만 이상인 항목만 추출한다.
✔️ 조건이 여러개인 경우
조건이 여러 개인 경우에는 `.loc[ ]` 안에 `&`으로 여러 개의 조건을 넣어주면 된다.
cond1=(df1['Amount_Month'] >= 100000)
cond2=(df1['Overdue_count']<=5)
df1.loc[cond1 & cond2]
☑️ 특정 값을 만족하는 항목 추출: `.isin( )`
만약 컬럼에 대한 값 중에 특정 값들만 추출하고 싶을 때는 `.isin( )`을 사용한다.
여러 값들에 대한 항목을 모두 보고 싶다면 리스트로 넣어주면 된다.
cond1 = df1['Channel'].isin(['영업방판', '홈쇼핑/방송', '대형마트A'])
df1.loc[cond1]
이 경우, `Channel`에 대한 값이 `영업방판`, `홈쇼핑/방송` 또는 `대형마트A`인 항목들만 추출한다.
🔎 데이터 요약 (pivot)
평균 등 전체 데이터에 대한 통계를 알고 싶을 때 `.pivot_table( )` 함수를 이용할 수 있다.
인자로는 `index`와 `vaues`, `aggfunc` 값을 넘겨주어야 한다.
- `index` : 구분하고자 하는 값
- `values` : 계산하고자 하는 값
- `aggfunc` : 계산하려는 통계량
df1.pivot_table(index='Sales_Type', values='Amount_Month', aggfunc='mean')
이 경우, `Sales_Type` 별 `Amount_Month`의 평균(`mean`)을 계산한다.
만약, `Sales_Type`에 대한 값으로 '렌탈'과 '멤버십'이 있다고 하면,
`Sales_Type='렌탈'`인 항목들의 `Amount_Month` 값들의 평균과 `Sales_Type='멤버십'`인 항목들의 `Amount_Month` 값들의 평균을 데이터 프레임 구조로 출력한다.
'파이썬' 카테고리의 다른 글
[파이썬] 기본 문법 정리 (0) | 2025.03.03 |
---|---|
[파이썬] 조건문, 반복문, 함수 (0) | 2025.03.03 |
[파이썬] 자료구조 (0) | 2025.02.19 |
[파이썬] 파이썬 기초 문법 (변수, 데이터 타입, 연산자) (0) | 2025.02.19 |
[파이썬] 사용자 입력 받기 (0) | 2025.02.08 |