문제정의 > 데이터 수집 > 데이터 전처리 > 탐색적 데이터 분석(EDA) > 데이터 모델링 및 알고리즘 선택 > 모델 학습 및 평가 > 결과 해석 > 의사 결정 및 개선
import pandas as pd
# 시리즈 생성
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print(s)
EX)
import pandas as pd
prices =[1000, 1010, 1020]
Series1=pd.Series(prices)
Series1
# 인덱스 설정
dates=pd.date_range('20230101', periods=3)
Series2=pd.Series(prices, index= dates)
Series2
# 값 추가
Series2['2023-01-04']=1030
Series2
Series2[1:3] #슬라이싱으로 값 불러오기
Series2[2] #인덱싱으로 값 불러오기
import pandas as pd
# 데이터프레임 생성
data = {'이름': ['A', 'B', 'C', 'D'],
'나이': [20, 30, 25, 28],
'성별': ['여', '남', '여', '남']}
df = pd.DataFrame(data)
print(df)
EX)
prices = {
'SK 텔레콤' : [44000,44500,45000],
'삼성전자' : [70100, 70200, 70300],
'LG 전자' : [85000,85500,86000]
}
df1=pd.DataFrame(prices)
df1
#인덱싱 추가
df2=pd.DataFrame(prices,index=dates)
df2
- 데이터 선택
df2.iloc[:,0]
Q1. 2023년 1월 2일 ~ 2023 1월 3일 까지의 '삼성전자', 'LG전자' 데이터를 가져와주세요.
df2.iloc[1:3,1:3]
df2.loc[['2023-01-02','2023-01-03']][['삼성전자','LG 전자']]
Q2. 데이터 70200원 가져오기 (iloc, loc 각각 활용)
df2.iloc[1,1]
df2.loc['2023-01-02','삼성전자']
- loc는 인덱스, 열의 정확한 명칭으로 데이터를 불러올 수 있고, iloc는 정수로 데이터를 불러올 수 있다
- 데이터 확장
s1=pd.Series([500000,500500,501000], index=dates, name='LG 화학')
concat_df2=pd.concat([df2,s1],axis=1)
concat_df2
* axis=1은 열 방향으로 붙이는 것, axis=0은 행 방향으로 붙이는 것
#데이터 프레임의 열을 시리즈로 불러와서 연산 후 열로 추가
concat_df2['LG 화학_add_500']=concat_df2['LG 화학']+500
concat_df2
# 행 추가하기
concat_df2.loc['2023-01-06',:]=[44000,7100,85000,45500,505000]
concat_df2
# 행에 연산을 하고 추가하기
concat_df2.loc['2023-01-05',:]=concat_df2.loc['2023-01-06',:]-100
concat_df2
# 인덱스 정렬하기
concat_df2.sort_index()
concat_df2.sort_values(by='삼성전자')
concat_df2.sort_values(by='삼성전자',ascending=False) #내림차순
* 오름차순
* 내림차순
-데이터 삭제
concat_df2.drop('2023-01-03') #다른 변수에 저장을 해야 데이터 삭제가 반영된다
concat_df2.drop('2023-01-03',inplace=True)
concat_df2 #inplace를 넣으면 변수 지정을 하지 않아도 된다
concat_df2.drop('LG 화학_add_500', axis=1, inplace=True)
# 행삭제
- 데이터 합
concat_df2['주가 총액']=concat_df2.sum(axis=1)
concat_df2
- 데이터 요약
#데이터의 기술통계량 요약
concat_df2.describe()
- 결측치 처리
# 결측치 만들어 주기
import numpy as np
concat_df2.loc['2023-01-05',['LG 화학','LG 전자']]=np.NaN
concat_df2
concat_df2.dropna() #결측치가 포함된 행 삭제
concat_df2.dropna(axis=1) #결측치가 포함된 열 삭제
concat_df2.fillna(0)#0으로 채우기
concat_df2.fillna(method='ffill')#바로 앞 값으로 채우기
concat_df2.fillna(method='bfill')#뒤 값으로 채우기
concat_df2.interpolate()#전 후의 중간값으로 채우기
concat_df2.drop_duplicates()# 중복값 삭제
concat_df2.drop_duplicates('삼성전자')#'삼성전자'열의 중복값을 기준으로 행 삭제
idx=concat_df2['삼성전자'].drop_duplicates().index
concat_df2.loc[idx, :]#'삼성전자'열의 중복값을 기준으로 행 삭제
Q1. 2022-01-01 ~ 2022-12-01 월초 인덱스를 생성
df3=pd.DataFrame(index=dates)
df3
Q2. Q1에서 생성한 인덱스를 가지고 데이터프레임 생성(값은 자율, 이때 칼럼이름은 value)
df3=pd.DataFrame(column,index=dates)
df3
Q3. value 칼럼에서 100을 더한 value_add_100 칼럼을 생성해주세요.
df3['value_add_100']=df3['value']+100
df3
Q4. value 칼럼과 value_add_100 칼럼을 평균한 mean 칼럼을 생성해주세요.
df3['mean']=df3.mean(axis=1)
df3