728x90
반응형
SMALL
- 판다스 (Pandas)
- 웨스 맥키니 가 개발한 라이브러리
- 데이터 작업을 쉽고 직관적으로 할 수 있도록 설계된 빠르고 유연한 데이터 자료 구조(데이터 프레임)를 제공하는 모듈
!pip install pandas
- 라이브러리 임포트```python import pandas as pd
1-1. Series와 DataFrame
- 2차원 표 데이터를 데이터프레임이라고 한다면, 1차원 표 데이터는 시리즈다.
- 표의 데이터 부분을 values라고 부름
표의 행 이름을 index라고 부름
- 표의 열 이름을 columns라고 부름
- 시리즈는 values와 index로 이루어져 있고, 데이터 프레임은 values, index, columns로 이루어져 있음
- 데이터프레임과 시리즈는 value는 넘파이의 ndarray 기반
```python
data1 = [[67, 93 91],
[75, 69, 96],
[85, 81, 82],
[62, 70, 75],
[98, 45, 87]]
#idx
idx1 = ['김사과', '반하나', '오렌지', '이메론 '베에리']
#columns
col1 = ['국어', '영어', '수학']
- 데이터 프레임 생성
# DataFrame(데이터, 인덱스, 컬럼)
pd.DataFrame(data1)
# DataFrame(데이터, 인덱스, 컬럼)
pd.DataFrame(data1, idx1)
# DataFrame(데이터 인덱스, 컬럼)
df1 = pd.DataFrame(data1, idx1, col1)
# pd.DataFrame(data = data1, index = idx1, columns = col1)
- 데이터 프레임 확인
df1
- 값 확인
df1.values
- 인덱스 확인
df1.index
- 열 확인
df1.columns
- 1차원 데이터(Series) 생성
data2 = [67, 75,85, 62, 98]
# Series(데이터, 인덱스)
print(pd.Series(data2))
pd.Series(data2, idx1)
se1 = pd.Series(data2, idx1)
se1.values
se1.index
- 딕셔너리를 사용하여 데이터 프레임을 생성
dic1 = {
'국어': [67, 75, 75, 62, 98],
'영어': [93, 69, 81, 70, 45],
'수학': [91, 96, 82, 75, 87]
}
df2 = pd.DataFrame(data=dic1, index = idx1)
- 데이터 프레임 확인
df2
- CSV 파일 다루기
- 데이터를 쉼표로 구분 파일
- 엑셀로 로딩할 수 있지만 쉼표로 구분된 csv가 더 가볍기 때문에 데이터를 많이 사용
- 공공데이터포털에서도 csv 포멧의 파일을 제공
# pd.read_csv(CSV파일, 인코딩방법)
pd.read_csv('korean-idol.csv```
- 파일 경로를 사용하여 파일 읽기
```python
pd.read_csv('/content/drive/MyDrive/Colab Notebooks/수업/데이터 분석(파이썬)/korean-idol.csv')
- 웹 주소에서 파일 읽기
pd.read_csv('http://bit.ly/ds-korean-idol')
- 엑셀 파일 읽어오기
python
pd.read_excel('/content/drive/MyDrive/Colab Notebooks/수업/데이터 분석(파이썬)/korean-idol.xlsx')
- 데이터프레임 기본 정보 알아보기
python
df = pd.read_csv('http://bit.ly/ds-korean-idol')
python
type(df)
- 기본적인 행(row), 열(column)의 정보와 데이터 타입을 반환
python
df.info()
4-1. 열(column) 다루기
python
df.columns
- 새로운 열 이름 정의
python
new_column = ['name',group', 'company', 'gender', 'birthday', 'height', 'blood', 'brand']
- 열 이름 변경
python
df.columns = new_column
df
4-2. 통계 정보 알아보기
- 통계 정보 출력
python
df.describe()
python
df.describe(include=object)
4-3. 형태(shape)
python
df.shape
4-4. 원하는 개수의 데이터 보기
- 상위 5개 row를 출력
python
df.head()
- 상위 n개의 row를 출력
python
df.head(7)
- 하위 5개의 row를 출력
python
df.tail()
- 하위 n개의 row를
python
df.tail(1)
4-5. 정렬하기
python
# 인덱스로 오름차순 정렬
df.sort_index()
python
# 인덱스로 내림차순 정렬
df.sort_index(ascending=False)
python
# 값으로 오름차순 정(by='기준')
df.sort_values(by='height')
python
# 값으로 내림차순 정렬(by='기준', ascending=False)
df.sort_values(by='height', ascending=False)
python
# NaN을 가장로 올리기(기본값이 last)
df.sort_values(by='height', na_position='first')
python
# NaN을 가장 위로 올리기(기본값이 last)
df.sort_values(by='height', ascending=False ,na_position='first')
python
# 1차 정렬: 키(내림차순), 2차 정렬: 브랜드(오름차순)
df.sort_values(by=['height 'brand'], ascending=[False, True], na_position='first')
- 데이터 다루기
python
df.head()
python
df['blood']
python
type(df['blood'])
python
df.blood
5-1 범위 선택
python
df.head(3)
python
df[:3]
- loc 인덱싱
python
# 레이블(이름) 인덱싱, 행과 열 모두 인덱싱 슬라이싱이 가능
df.loc[:, 'name']
python
# 인덱스 2부터 5까지의 데이터를 가져온다.(5를 포함)
df.loc[2:5, 'name']
python
# 여러 개의 열을 가져올 때는 리스트를 이용한다.
df.loc[:, ['name', 'gender','height']]
python
# 슬라이싱도 가능하다.
df.loc[3:8, 'name':'gender']
- iloc 인덱싱
python
# iloc는 index로 인덱싱, 행과 열 모두 인덱싱과 슬라이싱 가능
df.iloc[:, [0, 2]]
python
# 0부터 2번 열까지 슬라이싱(2번 열은 포함하지 않음)
df.iloc[:, 0:2]
python
df.iloc[1:3, 2:4]
- Boolean 인덱싱
python
# 키가 180 이인 경우
df['height'] >= 180
python
# 키가 180 이상인 데이터만 추출
df[df['height'] >= 180]
python
# 키가 180 이상인 사람의 이름만 추출
df['name'][df['height'] >= 180]
python
# 리스트로 여러 행을 가져온다.
df[['name','gender','height']][df['height'] >= 180]
- isin
- 정의한 리스트에 있는 데이터를 색인하려는 경우 사용하는 함수
python
company = ['플레디스', 'SM']
python
df['company'].isin(company)
python
df[df['company'].isin(company)]
python
df.loc[df['company'].isin(company)]
결측값(Null) 처리하기
Pandas에서는 결측값을 NaN(Not a Number)로 표기 된 것은 모두 결측값으로 취급합니다.
# 총 entries 값과 갯수가 다르면 결측값이 있는지 확인 가능
df.info()
# 결측값이 있는 행을 선택하기
df.isnull()
df.isna()
# 결측값이 있는 특정 컬럼 확인하기
df["group"].isnull()
# 결측값이 있는 행 얻기
df[df["group"].isnull()]
# 결측값이 없는 데이터만도 추출이 가능하다
df[df["group"].notnull()]
# 결측값이 있는 컬럼의 이름만 얻기
df[df["group"].isnull()]['name
728x90
반응형
LIST
'데이터분석' 카테고리의 다른 글
Pandas 중복값 제거 (0) | 2023.06.08 |
---|---|
Pandas를 이용한 통계값 다루기, 그룹으로 묶기 (0) | 2023.06.08 |
Pandas 행, 열 추가 및 삭제하기 - 데이터 추가, 수정, 제거에 대해 알아보자 (0) | 2023.06.08 |
Pandas 데이터 복사 방법 - 원본 데이터 훼손 방지 (0) | 2023.06.08 |
Numpy (0) | 2023.06.08 |