Pandas 기초

2022. 11. 30. 00:56·과거 기록들/Data Analysis

titanic.csv 다운로드 주소 : https://www.kaggle.com/c/titanic/data

import numpy as np
import pandas as pd
data = pd.read_csv('titanic.csv')

# 딕셔너리 만들기
dict = {'열인덱스' : [1, 2, 3, 4, 5],
        '열인덱스2' : [10, 20, 30, 40, 50]}
        
df = pd.DataFrame(dict) # 데이터프레임으로 변환
display(df)

# 기본 명령어들
print(df.head()) # 상위 5개

print('-'*50)

print(df.tail()) # 하위 5개

print('-'*50)

print(df.columns) # 칼럼명들 확인

print('-'*50)

print(df.columns.values) # array 형태로 확인

print('-'*50)

print(list(df)) # list 형태로 확인

print('-'*50)

print(df.dtypes) # 열 자료형 확인

print('-'*50)

print(df.info()) # 자료형, 값, 개수 확인

print('-'*50)

print(df.describe()) # 기초통계량 확인

############################################################################################

display(data[['Age', 'Fare']].describe()) # 2열만 따로 describe

print('\033[43m' + ' '*100)

temp = data.sort_values(by = ['Age', 'Fare'], ascending = [True, False]) # Age가 적은 순서부터, 같은 값일 경우 Fare가 큰 순서 부터
display(temp)

print('\033[43m' + ' '*100)

display(temp.reset_index(drop = True)) # 인덱스 리셋, False하면 원래 인덱스가 안으로 들어가고 새로 리셋됨

print('\033[43m' + ' '*100)

display(data['Survived'].unique()) # 어떤 요소가 있는지 보여줌
display(data['Survived'].value_counts()) # 어떤 요소가 몇개 있는지까지 보여줌
display(data['Survived'].nunique()) # 요소의 종류 개수를 보여줌

print('\033[43m' + ' '*100)

############################################################################################

display(data.loc[data['Age'].isin([4, 1])]['Age'].head()) # age가 4, 1인 것만 보여줌

print('\033[43m' + ' '*100)

display(data.loc[data['Age'].between(10, 20)]['Age'].head(10)) # 10이상 20이하의 값을 보여줌
display(data.loc[data['Age'].between(10, 20, inclusive = 'left')]['Age'].head(10)) # 이상의 위치를 조절하는 inclusive
# both면 이상이하, neither이면 초과미만, left면 이상미만, right면 초과이하

print('\033[43m' + ' '*100)

display(data.loc[data['Age'] > 30, ['Sex', 'Name', 'Age']]) # 설명 없어도 될거같음

print('\033[43m' + ' '*100)

display(data.loc[0 : 5, ['Age']]) # data의 0~5행, Age열을 가져옴 (0~4아님)
display(data.iloc[0 : 5, 0 : 3]) # 0~4까지 가져옴 loc = 컬럼명, iloc = 인덱스 기반인 것 같음

print('\033[43m' + ' '*100)

############################################################################################

display(data.groupby(by = ['Sex'], as_index = True)['Fare'].value_counts()) # 성별별 요금 각각의 개수, as_index가 True면 Sex가 인덱스 / False면 새로 인덱스를 만듬
display(data.groupby(by = ['Sex'], as_index = True)[['Fare', 'Pclass']].agg(['max', 'min', 'nunique'])) # agg는 들어있는 모든 함수를 표현해줌, groupby 응용

print('\033[43m' + ' '*100)

display(data.rename(columns = {'Pclass' : 'PC', 'Survived' : 'SV'}, inplace = False).iloc[:, 3 : 5]) # inplace = False라 실제로 값이 바뀌지는 않음, 특정 컬럼명만 바꾸기

print('\033[43m' + ' '*100)

df_test.columns = ['1번', '2번'] # 모든 칼럼명을 바로 바꾸려면 이렇게도 가능
display(df_test)

data['Sex_num'] = np.where(data['Sex'] != 'male', 'yes', 'no') # 열 추가

############################################################################################

data['Age_range'] = pd.cut(data['Age'], 3, labels = ['childs', 'middle','adults']) # age 컬럼을 3등분해서 각각의 범위를 설정함

data['Gen'] = data['Sex'].map({'male' : 1, 'female' : 0}) # male은 1로, female은 2로

data['Fare_range'] = np.where(data['Fare'].between(0, 30), 'under30', 'over30') # 요금이 30이하인 사람은 under30, 이상인 사람은 over30
display(data)

print('\033[43m' + ' '*100)

display(data.groupby(['Age_range'], as_index = False)['Age'].agg(['min', 'max'])) # 나이 범위별 나이 (각 나이 범위의 최댓값, 최솟값) // 즉 나눈 구간의 범위를 알려줌
# tip: 음의 무한대는 -np.inf, 양의 무한대는 np.inf
# 더 많은 행과 열 출력하기

import pandas as pd
print("pandas version: ", pd.__version__)
pd.set_option('display.max_row', 100)
pd.set_option('display.max_columns', 30)
저작자표시 비영리 변경금지 (새창열림)

'과거 기록들 > Data Analysis' 카테고리의 다른 글

데이터 분석 시각화 total 정리  (0) 2023.03.28
Pandas Base  (0) 2023.03.19
Numpy 기초  (2) 2022.11.27
'과거 기록들/Data Analysis' 카테고리의 다른 글
  • 데이터 분석 시각화 total 정리
  • Pandas Base
  • Numpy 기초
P444
P444
써보면서 유용했던 개발 정보들을 정리해둡니다. 틈틈이 일상과 잡생각도 남겨요.
  • P444
    Rak's Blog
    P444
  • 전체
    오늘
    어제
    • 전체 글 목록 (72)
      • Coding Test Practice (23)
        • Python (18)
        • C++ (5)
      • C++ (2)
        • 개인 필기 (2)
      • Git (2)
        • 개인 필기 (2)
      • Notion (8)
        • Notion 일정관리 자동화 (8)
      • Python (19)
        • 개인 필기 (2)
        • 유용한 python 코드 (12)
        • 모듈개발 (1)
        • Velog 글 백업 스크립트 GUI Add-on (3)
      • 과거 기록들 (16)
        • Web Crawling (12)
        • Data Analysis (4)
      • 일기 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    코드
    pandas
    numpy
    GIT
    노트정리
    리스트
  • hELLO· Designed By정상우.v4.10.3
P444
Pandas 기초
상단으로

티스토리툴바