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

2023. 6. 8. 21:20·🥇 certification logbook
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
'🥇 certification logbook' 카테고리의 다른 글
  • [python 데이터 핸들링] 판다스 연습 튜토리얼 - 03_Grouping
  • [python 데이터 핸들링] 판다스 연습 튜토리얼 - 02 Filtering & Sorting
  • [ADsP] 비지도학습 - 자기조직화지도(SOM) & 다차원척도법(MDS)
  • 앙상블 (Ensemble) - 랜덤 포레스트 분류 (Random Forest Classifier)
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (223)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (73)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

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

티스토리툴바