복습

240104복습

glenlee 2024. 1. 5. 02:34

라이브러리 설치
!pip install pandas
!pip install seaborn

import pandas as pd

pd.__version__

## pandas의 데이터 구조
- Series 데이터 구조, 1차원 데이터 : 컬럼의 갯수가 1개인 데이터
- DataFrame 데이터 구조, 컬럼 갯수가 여러개인 데이터

s1 = pd.Series([10, 20, 30, 40, 50])
s1

s1.index

s1.values

s1 = pd.Series(['a', 'b', 'c', 1, 2, 3])
s1

import numpy as np

s3 = pd.Series([np.nan, 10, 30]) # 결측치, missing values
s3

index_date = ['2018-10-07', '2018-10-08']
s4 = pd.Series([200, 195], index = index_date)
s4

index_date = ['2018 10-07', '2018-10-08']
s4= pd.Series([200,195], index = index_date)
s4

data_dict = ({
    '국어' : 100,
    '영어' :95})

s5 = pd.Series(data_dict)
s5

#날짜 데이터

pd.date_range(start='2024-01-01', end='2024-01-07')

pd.date_range(start='2024/01/01',periods =14 )

pd.date_range(start='2024/01/01', periods = 4, freq = '2D') #freq 2d = 2days

pd.date_range(start='2024-01-01 08:00', periods = 4, freq = 'H') #H =hour

## DataFrame을 활용한 데이터 생성

!pip install seaborn #라이브러리 설치코드

import seaborn as sns # 시각화 라이브러리 (통계 시각화)

sns.__version__

sns.get_dataset_names()

titanic = sns.load_dataset('titanic')
titanic

table_data = {
    '연도' : [2015, 2016, 2016, 2017, 2017],
    '지사' : ['한국', '한국', '미국', '한국', '미국'],
    '고객 수' : [200, 250, 450, 300, 500]
}

table_data

data = pd.DataFrame(table_data)
data

data.index

data.values.shape

- 데이터 가공 시, numpy 메서드와 pandas 메서드 조합을 해서 처리하는 경우 많음
    + vectorization 으로 처리 / 파이썬 기초문법 (for-loop) 대신
    + 속도가 매우 빠름

data.columns

## 데이터 연산

import pandas as pd 
import seaborn as sns 
import numpy as np 

s1 = pd.Series([1, 2, 3, 4, 5])
s2 = pd.Series([10, 20, 30, 40, 50])
s1 + s2

s1 - s2

s1 * s2

s2 / s1



# 리스트와 NumPy의 배열과 다르게, 서로 크기가 달라도 연산할 수 있음

s1 = pd.Series([1, 2, 3, 4])
s2 = pd.Series([10, 20, 30, 40, 50])
s1 + s2

table_data1= {'A' : [1, 2, 3, 4, 5],
               'B': [10, 20, 30, 40, 50],
             'C' : [100, 200, 300, 400, 500]}
df1 = pd.DataFrame(table_data1)
df1

table_data2={'A': [6, 7, 8],
              'B': [60, 70, 80],
              'C': [600, 700, 800]}
df2= pd.DataFrame(table_data2)
df2             

df1 + df2

df1 - df2

df2 / df1

table_data3 = {'봄':  [256.5, 264.3, 215.9, 223.2, 312.8],
              '여름': [770.6, 567.5, 599.8, 387.1, 446.2],
              '가을': [363.5, 231.2, 293.1, 247.7, 381.6],
              '겨울': [139.3, 59.9, 76.9, 109.1, 108.1]}
columns_list = ['봄', '여름', '가을', '겨울']
index_list = ['2012', '2013', '2014', '2015', '2016']
df3 = pd.DataFrame(table_data3, columns = columns_list, index = index_list)
df3

table_data4 = {'honda' : ['cbr','cbf','crf'],
               'suzuki' : ['gsr', 'gsx', 'gsxr'],
               'bmw' : ['gs', 's', 'f']}
columns_list = ['honda','suzuki','bmw']
index_list = ['2012', '2013', '2014']
df4 = pd.DataFrame(table_data4, columns= columns_list, index= index_list)   
df4    

#요소들의 갯수를 맞춰줄거ㅗㅅ


df3.mean()

df3.max()

df3.min() # 최소값

df3.std()

df3.mean(axis=1) # 축1 가로 방향으로 계산

df3.mean(axis=0)# 축0 세로방향으로 계산

df3.describe()

KTX_data = {'경부선 KTX': [39060, 39896, 42005, 43621, 41702, 41266, 32427],
            '호남선 KTX': [7313, 6967, 6873, 6626, 8675, 10622, 9228],
            '경전선 KTX': [3627, 4168, 4088, 4424, 4606, 4984, 5570],
            '전라선 KTX': [309, 1771, 1954, 2244, 3146, 3945, 5766],
            '동해선 KTX': [np.nan,np.nan, np.nan, np.nan, 2395, 3786, 6667]}
index_list = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']

df_KTX = pd.DataFrame(KTX_data, index = index_list)
df_KTX

df_KTX.head() #head() 는 처음 5개

df_KTX.head(3)

df_KTX.tail(2)

## 행 선택 (=행 추출)
- Slicing과 동일한 문법으로 추출 가능

df_KTX[0:2]

df_KTX[2:5]

## loc vs iloc를 활용한 열 추출, 행 추출
- 두가지의 차이 기억하기
- 한가지만 기억하고자 한다면, loc만 기억하자

https://less927.tistory.com/7

tips = sns.load_dataset('tips')
tips

# (1) total_bill의 중간값 이하인 것만 조회

tips.loc[tips['total_bill'] <= tips['total_bill'].median(),:].head(1)

tips.loc[tips['tip'] >= tips['tip'].mean(),:] #팁의 평균보다 큰 값

# (2) day가 Sun인 데이터만 조회하기
tips.loc[tips['day'] == 'Sun',:]

# tip의 평균보다 크면서, time이 Dinner인 데이터만 조회
tips.loc[(tips['tip'] >= tips['tip'].mean()) &
         (tips['time'] == 'Dinner'),:] 

# tip의 평균보다 크면서, time이 Dinner이고, 남자손님 데이터만 조회
tips.loc[(tips['tip'] >= tips['tip'].mean()) &
         (tips['time'] == 'Dinner') &
         (tips['sex'] == 'Male'),:] 



 

 

 

 

& 조건문 추가

()조건문 설정

,계산 끝내는 시점

:] 값 도출명령

'복습' 카테고리의 다른 글

230105복습  (0) 2024.01.07
matplotlib 그래프그리기 '기본사용' 튜토리얼 따라해보기  (0) 2024.01.06
loc 와 iloc의 차이  (1) 2024.01.05
240103복습  (0) 2024.01.03
231229 복습  (1) 2023.12.30