라이브러리 설치
!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 |