[python 데이터 핸들링] 판다스 연습 튜토리얼 - 01 Getting & Knowing Data

2023. 6. 8. 21:20·🥇 certification logbook
목차
  1. Pandas 사용 준비
  2. DataSet
  3. Question
  4. DataSet
  5. Question
728x90
반응형

Reference
- DataManim (https://www.datamanim.com/dataset/99_pandas/pandasMain.html#)
- <파이썬 한권으로 끝내기>, 데싸라면▪빨간색 물고기▪자투리코드, 시대고시기획 시대교육
 

 

Pandas 사용 준비

!pip install pandas

참고 : 2023.06.03 - [data/빅데이터분석기사] - 분석환경 설정 (파이썬 + 주피터노트북 + pandas)

 

DataSet

롤 랭킹 데이터 : https://www.kaggle.com/datasnaek/league-of-legends

DataUrl = ‘https://raw.githubusercontent.com/Datamanim/pandas/main/lol.csv%E2%80%99

 

Question

✔ 데이터를 로드하라. 데이터는 \t을 기준으로 구분되어있다.

In [ ]:
import pandas as pd
DataUrl = 'https://raw.githubusercontent.com/Datamanim/pandas/main/lol.csv'
df=pd.read_csv(DataUrl, sep='\t')
type(df)
 
Out[ ]:
pandas.core.frame.DataFrame

+ import pandas as pd : 약칭 설정

+ pd.read_csv(filepath, na_values='NA', encoding='euc-kr') : filepath의 csv 파일을 DataFrame 객체로 읽어오며, null 값이 빈칸이 아닌 어떠한 string 값으로 저장된 경우 이를 인식하기 위해 na_values를 사용. 데이터에 한국어가 포함된 경우 'euc-kr'로 인코딩.

 

✔ 데이터의 상위 5개 행을 출력하라

In [ ]:
df.head(5)
 
Out[ ]:
5 rows × 61 columns

+ iris.head() : 컬럼명을 포함하여 처음 6줄을 출력. (데이터는 5줄)

+ iris.tail() : 컬럼명을 포함하여 마지막 6줄을 출력. (데이터는 5줄)

 

✔ 데이터의 행과 열의 갯수를 파악하라

In [ ]:
print(df.shape)
print(df.shape[0])
print(df.shape[1])
 
Out[ ]:
(51490, 61)
51490
61

+ iris.shape : 데이터프레임의 크기를 반환하는 속성. (행의 개수, 열의 개수) 형태로 반환

 

 

✔ 전체 컬럼을 출력하라

In [ ]:
Ans = df.columns
Ans
 
Out[ ]:
Index(['gameId', 'creationTime', 'gameDuration', 'seasonId', 'winner',
       'firstBlood', 'firstTower', 'firstInhibitor', 'firstBaron',
       'firstDragon', 'firstRiftHerald', 't1_champ1id', 't1_champ1_sum1',
       't1_champ1_sum2', 't1_champ2id', 't1_champ2_sum1', 't1_champ2_sum2',
       't1_champ3id', 't1_champ3_sum1', 't1_champ3_sum2', 't1_champ4id',
       't1_champ4_sum1', 't1_champ4_sum2', 't1_champ5id', 't1_champ5_sum1',
       't1_champ5_sum2', 't1_towerKills', 't1_inhibitorKills', 't1_baronKills',
       't1_dragonKills', 't1_riftHeraldKills', 't1_ban1', 't1_ban2', 't1_ban3',
       't1_ban4', 't1_ban5', 't2_champ1id', 't2_champ1_sum1', 't2_champ1_sum2',
       't2_champ2id', 't2_champ2_sum1', 't2_champ2_sum2', 't2_champ3id',
       't2_champ3_sum1', 't2_champ3_sum2', 't2_champ4id', 't2_champ4_sum1',
       't2_champ4_sum2', 't2_champ5id', 't2_champ5_sum1', 't2_champ5_sum2',
       't2_towerKills', 't2_inhibitorKills', 't2_baronKills', 't2_dragonKills',
       't2_riftHeraldKills', 't2_ban1', 't2_ban2', 't2_ban3', 't2_ban4',
       't2_ban5'],
      dtype='object')

 

+ iris.columns : 컬럼명을 확인하거나 변경 가능

 

✔ 6번째 컬럼명을 출력하라

In [ ]:
Ans = df.columns[5]
Ans
 
Out[ ]:
'firstBlood'

 

 

✔ 6번째 컬럼의 데이터 타입을 확인하라 

In [ ]:
Ans = df.iloc[:,5].dtype
Ans
 
Out[ ]:
dtype('int64')

 

+ iris.dtypes : 데이터프레임의 각 컬럼의 데이터 타입은 dtypes 속성을 통해 확인 가능

+ iloc : index번호로 특정 행, 열을 나눔 (index는 0부터 시작)

+ loc : 변수명으로 특정 행, 열을 나눔

 

✔  데이터셋의 인덱스 구성은 어떤가

In [ ]:
Ans = df.index
Ans
 
Out[ ]:
RangeIndex(start=0, stop=51490, step=1)

 

✔ 6번째 컬럼의 3번째 값은 무엇인가?

In [ ]:
Ans = df.iloc[2,5]
Ans
 
Out[ ]:
2

 
 

DataSet

제주 날씨,인구에 따른 교통량데이터 : 출처 제주 데이터 허브
DataUrl = ‘https://raw.githubusercontent.com/Datamanim/pandas/main/Jeju.csv%E2%80%99
 

Question

✔  데이터를 로드하라.
In [ ]:

import pandas as pd
DataUrl = 'https://raw.githubusercontent.com/Datamanim/pandas/main/Jeju.csv'
df = pd.read_csv(DataUrl, encoding='euc-kr')
type(df)
 
Out[ ]:
pandas.core.frame.DataFrame

 

✔ 데이터 마지막 3개행을 출력하라

In [ ]:
Ans = df.tail(3)
Ans
 
Out[ ]:
  id 일자 시도명 읍면동명 거주인구 근무인구 방문인구 총 유동인구 평균 속도 평균 소요 시간 평균 기온 일강수량 평균 풍속
9618 32066 2020-04-30 제주시 도두동 28397.481 3144.895 84052.697 115595.073 41.053 29.421 20.3 0.0 3.0
9619 32067 2020-04-30 서귀포시 안덕면 348037.846 29106.286 251129.660 628273.792 46.595 49.189 17.6 0.0 3.5
9620 32068 2020-04-30 제주시 연동 1010643.372 65673.477 447622.068 1523938.917 40.863 27.765 14.1 0.0 4.8
 
 

✔  수치형 변수를 가진 컬럼을 출력하라

In [ ]:
Ans = df.select_dtypes(exclude=object).columns

# OR

import numpy as np
Ans = df.select_dtypes(include=[np.number]).columns
 
Out[ ]:
Index(['id', '거주인구', '근무인구', '방문인구', '총 유동인구', '평균 속도', '평균 소요 시간', '평균 기온',
       '일강수량', '평균 풍속'],
      dtype='object')

+ iris.select_dtypes() : 특정 데이터 타입을 선택할 수 있는 기능. object는 문자열 타입을 나타냄. np.number는 숫자형 데이터 타입을 나타내는 NumPy의 타입임

 
 

✔  범주형 변수를 가진 컬럼을 출력하라

In [ ]:
Ans = df.select_dtypes(include=object).columns
Ans
 
Out[ ]:
Index(['일자', '시도명', '읍면동명'], dtype='object')
 
 

✔  각 컬럼의 결측치 숫자를 파악하라

In [ ]:
Ans = df.isnull().sum()
Ans
 
Out[ ]:
id          0
일자          0
시도명         0
읍면동명        0
거주인구        0
근무인구        0
방문인구        0
총 유동인구      0
평균 속도       0
평균 소요 시간    0
평균 기온       0
일강수량        0
평균 풍속       0
dtype: int64

+ iris.isnull() : 각 요소가 결측치인지 여부를 나타내는 dataframe을 반환하며, sum() 메서드를 추가로 사용해 true값(결측치)의 개수를 컬럼별로 합산함

 

✔  각 컬럼의 데이터수, 데이터타입을 한번에 확인하라

In [ ]:
df.info()
 
Out[ ]:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9621 entries, 0 to 9620
Data columns (total 13 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   id        9621 non-null   int64  
 1   일자        9621 non-null   object 
 2   시도명       9621 non-null   object 
 3   읍면동명      9621 non-null   object 
 4   거주인구      9621 non-null   float64
 5   근무인구      9621 non-null   float64
 6   방문인구      9621 non-null   float64
 7   총 유동인구    9621 non-null   float64
 8   평균 속도     9621 non-null   float64
 9   평균 소요 시간  9621 non-null   float64
 10  평균 기온     9621 non-null   float64
 11  일강수량      9621 non-null   float64
 12  평균 풍속     9621 non-null   float64
dtypes: float64(9), int64(1), object(3)
memory usage: 977.3+ KB

+ iris.info() : 데이터의 요약 정보를 출력하여 확인 가능. 각 컬럼의 이름, 데이터 타입, 결측치의 유무와 개수 등 확인 가능. dataframe의 전체적인 구조와 메모리 사용량 보여줌

 
 

✔  각 수치형 변수의 분포(사분위, 평균, 표준편차, 최대 , 최소)를 확인하라

In [ ]:
Ans = df.describe()
Ans
 
Out[ ]:
  id 거주인구 근무인구 방문인구 총 유동인구 평균 속도 평균 소요 시간 평균 기온 일강수량 평균 풍속
count 9621.000000 9.621000e+03 9621.000000 9621.000000 9.621000e+03 9621.000000 9621.000000 9621.000000 9621.000000 9621.000000
mean 27258.000000 3.174315e+05 35471.201510 195889.561802 5.487922e+05 41.109084 37.215873 13.550828 6.972426 2.753171
std 2777.487804 2.982079e+05 40381.214775 140706.090325 4.608802e+05 8.758631 12.993786 7.745515 27.617260 1.498538
min 22448.000000 9.305552e+03 1407.936000 11538.322000 2.225181e+04 24.333000 12.667000 -9.600000 0.000000 0.000000
25% 24853.000000 9.539939e+04 12074.498000 99632.153000 2.216910e+05 34.250000 27.889000 7.600000 0.000000 1.700000
50% 27258.000000 2.221105e+05 21960.928000 152805.335000 3.866935e+05 39.640000 34.500000 13.400000 0.000000 2.400000
75% 29663.000000 4.106671e+05 40192.032000 236325.109000 6.406918e+05 49.105000 46.176000 19.700000 1.500000 3.400000
max 32068.000000 1.364504e+06 263476.965000 723459.209000 2.066484e+06 103.000000 172.200000 30.400000 587.500000 13.333000

+ iris.describe() : 기술 통계량 제공. 평균, 표준편차, 최솟값, 최댓값, 중앙값 등 확인 가능.

 

✔  거주인구 컬럼의 값들을 출력하라

In [ ]:
Ans = df['거주인구']
Ans
 
Out[ ]:
0         32249.987
1        213500.997
2       1212382.218
3         33991.653
4        155036.925
           ...     
9616     228260.005
9617     459959.064
9618      28397.481
9619     348037.846
9620    1010643.372
Name: 거주인구, Length: 9621, dtype: float64
 
 

✔  평균 속도 컬럼의 4분위 범위(IQR) 값을 구하여라

In [ ]:
Ans = df['평균 속도'].quantile(0.75) - df['평균 속도'].quantile(0.25)
Ans
 
Out[ ]:
14.854999999999997

+ quantile(q) : 주어진 백분위수에 해당하는 값을 계산. q는 0에서 1사이의 값을 가짐. 즉 0.75는 75번째 백분위수.
+ IQR : 데이터의 중간 50% 범위를 나타내는 통계적 지표. IQR = Q3(0.75) - Q1(0.25)

 
 

✔  읍면동명 컬럼의 유일값 갯수를 출력하라

In [ ]:
Ans = df.읍면동명.nunique()
Ans
 
Out[ ]:
41

+ iris['컬럼명'].nunique() : 유일값의 개수를 반환

 
 

✔ 읍면동명 컬럼의 유일값을 모두 출력하라

In [ ]:
Ans = df.읍면동명.unique()
Ans
 
Out[ ]:
array(['도두동', '외도동', '이도2동', '일도1동', '대천동', '서홍동', '한경면', '송산동', '조천읍',
       '일도2동', '영천동', '예래동', '대륜동', '삼도1동', '이호동', '건입동', '중앙동', '삼양동',
       '삼도2동', '이도1동', '남원읍', '대정읍', '정방동', '효돈동', '아라동', '한림읍', '구좌읍',
       '용담1동', '오라동', '화북동', '연동', '표선면', '중문동', '성산읍', '안덕면', '천지동',
       '노형동', '동홍동', '용담2동', '봉개동', '애월읍'], dtype=object)

+ iris['컬럼명'].unique() : 특정 컬럼에 있는 유일한 값들을 반환

728x90
반응형

'🥇 certification logbook' 카테고리의 다른 글

[python 데이터 핸들링] 판다스 연습 튜토리얼 - 05_Time_Series  (0) 2023.06.13
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 04_Apply , Map  (0) 2023.06.13
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 03_Grouping  (0) 2023.06.13
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 02 Filtering & Sorting  (0) 2023.06.09
[ADsP] 비지도학습 - 자기조직화지도(SOM) & 다차원척도법(MDS)  (0) 2023.06.08
앙상블 (Ensemble) - 랜덤 포레스트 분류 (Random Forest Classifier)  (0) 2023.06.07
다중 회귀 (Multiple Regression Model)  (0) 2023.06.07
다항 회귀 (Polynomial Regression Model)  (0) 2023.06.06
  1. Pandas 사용 준비
  2. DataSet
  3. Question
  4. DataSet
  5. Question
'🥇 certification logbook' 카테고리의 다른 글
  • [python 데이터 핸들링] 판다스 연습 튜토리얼 - 03_Grouping
  • [python 데이터 핸들링] 판다스 연습 튜토리얼 - 02 Filtering & Sorting
  • [ADsP] 비지도학습 - 자기조직화지도(SOM) & 다차원척도법(MDS)
  • 앙상블 (Ensemble) - 랜덤 포레스트 분류 (Random Forest Classifier)
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (216)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (66)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    근로기준법
    IBM
    형법
    certificate
    방통대
    온라인 강의 추천
    법학과
    datascience
    Coursera
    Python
    인공지능 입문
    데이터분석준전문가
    데이터사이언스 입문
    기본권의기초이론
    민법
    머신러닝
    ADsP
    deeplearning
    자격증
    빅데이터분석기사
  • hELLO· Designed By정상우.v4.10.3
이소야
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 01 Getting & Knowing Data

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.