colab을 이용하여 데이터 분석을 진행해 보았다.
1. adv.csv를 읽어 adv라는 데이터 프레임 만들기
import pandas as pd
adv = pd.read_csv("adv.csv", index_col=0, encoding="cp949")
첫 번째 column의 index를 0번부터 시작하도록 하여 프레임의 첫 번째 열이 행 인덱스로 사용되도록 함
인코딩이 깨지는 경우를 방지하기 위해 cp949로 인코딩 타입을 설정
2. adv의 values라는 값을 adv_array라고 할당
adv_array = adv.values
행과 열이 있는 표 형식으로 답이 나옴
3. adv_array에서 3열만 선택한 후 10~30행, 2~3열 선택
adv_array[:, 2]
adv_array[9:30, 1:3]
:을 기준으로 값이 들어있지 않으면 '모든 열'을 의미함.
3열만 선택 -> 모든 행이 해당됨
우선, 3열만 선택하면 다음과 같음
adv_array[:, 2]
이후 2~3열을 선택하면 다음과 같음
adv_array[9:30, 1:3]
4. adv라는 데이터프레임에서 radio, news라는 column만 인덱싱
특정 column만 인덱싱
칼럼이 하나인 경우 단일 칼럼을 데이터 프레임으로 변환하기 위하여 괄호를 두 개를 작성해줌
adv[["radio"] ]
칼럼이 두 개인 경우
adv[["radio", "newspaper"] ]
5. adv에서 10~30행, 2~3열 선택
adv.iloc[9:30, 1:3]
6. pykrx를 설치하여 005930 종목의 지난달 주가를 가져와 10~15행, 3~5열 선택
!pip install pykrx
from pykrx import stock
df = stock.get_market_ohlcv_by_date("20240601", "20240630", "005930")
df.iloc[9:16, 2:5]
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler() #minmaxscaler라는 객체를 생성하는 메소드
#scaler.fit(df[["거래량"]])
#scaler.transfrom(df[["거래량"]])
scaler.fit_transform(df[["거래량"]]) #즉석에서 최대 최소를 찾아서 변환해줌
scaler.fit_transform(df[["종가"]])
transform 단계에서 학습된 최대값과 최소값을 사용하여 '종가' 열의 값을 0과 1 사이로 변환함
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit_transfrom(df[["종가"]])
import numpy as np
np.log(df[["종가"]])
np.log(0+1)
np.log1p(df[["종가"]]) #값에다가 1을 더한 후 log를 취하는 메소드
1. creditset2.csv를 credit로 읽기
credit = pd.read_csv('creditset2.csv')
2. train, test로 파티셔닝(7:3 으로)
from sklearn.model_selection import train_test_split
train, test = train_test_split(credit, test_size=0.3)
3. loan, income 컬럼을 Standard Scaling 적용
scaler = StandardScaler()
scaled = scaler.fit_transform(train[["loan","income"]])
scaler.fit_transform(test[["loan","income"]])
pd.DataFrame(scaled, columns=["loan", "income"])
데이터 프레임 형태로 할당 -> 보기 좋게 하기 위함
# unconv_MV_v5.csv를 df라는 이름으로 읽기
# X변수는 Por, Brittle, Perm TOC, y변수는 PRod
import pandas as pd
df = pd.read_csv('unconv_MV_v5.csv')
features = ['Por', 'Brittle', 'Perm', 'TOC']
target = 'Prod'
X = df[features] #.values.reshape(-1, len(features))
y = df[target].values
import statsmodels.api as sm
model = sm.OLS(y,X) #OLS: Ordianry Least Square
result = model.fit()
pritn(result.summary())
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.array([['OK', 'Perfect', 'Acceptable'], ['Awful','Awful', 'Perfect'], ['Acceptable', 'OK', 'Poor']]), columns=['Student1', 'Student2', 'Student3'])
df.replace(['Awful', 'Poor', 'OK', 'Acceptable', 'Perfect'], [0, 1, 2, 3, 4])요
df = pd.DataFrame(data=np.array([['1\n', 2, '3\n'], [4, 5, '6\n'], [7, '8\n', 9]]))
df.replace({'\n': '<br>'}, regex=True)
import numpy as np
# NaN 값으로 채워진 데이터프레임 생성
df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A'])
print(df)
# 결측치 여부를 확인
df.isnull()
# 결측치 비율을 계산
df.isnull().mean()
#eda
import pandas as pd
import matplotlib.pyplot as plt
# 데이터프레임 생성
data = pd.DataFrame( [1,0,0,1,2,1,1,1,0,0,0,2,2,1,3,3,2,2,1,0], columns=['v1'])
# 각 칼럼의 데이터 타입 확인
data.dtypes
# 칼럼의 고유 값 확인
data['v1'].unique()
#Histogram 생성
data['v1'].hist(bins=5)
1. weatherAUS.csv를 weather로 읽기
weather = pd.read_csv("weatherAUS.csv")
2. MinTemp 컬럼의 결측치를 해당 컬럼의 평균으로 채우기. 데이터프레임.컬럼.mean()
weather.MinTemp.fillna(weather.MinTemp.mean(), inplace=True)
inplace=True를 넣어주면 원본에 반영됨
3. weather에 대하여 dropna()를 적용한 weather2를 만들기
weather2 = weather.dropna() #하나라도 결측이 있는 경우에만
weather.dropna(how="all").shape #모든 칼럼에 대해서만
weather.dropna(subset=["MinTemp", "MaxTemp"]) #특정 칼럼에 대해서만
#피벗
#values: 피벗테이블 정리를 원하는 값
#columns: 피벗의 열
#index: 피벗의 행
import pandas as pd
products = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'],'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'],'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55],'testscore': [4, 3, 5, 7, 5, 8]})
pivot_products = products.pivot(index='category', columns='store', values='price')
print(pivot_products)
pivot_products2 = products.pivot_table(index='category', columns='store', values='price', aggfunc='mean')
print(pivot_products2)
# df2 데이터프레임 생성
df2 = pd.DataFrame( np.array( [[1,2], [3,4], [5,6]] ))
# df1 데이터프레임 생성
df1 = pd.DataFrame( [[1,2], [3,4], [5,6]],
index=['a', 'b', 'c'],
columns= ['c1','c2'] )
# 인덱스를 날짜로 변경
df1.index = ['2022-04-28','2022-04-29', '2022-04-30']
df2.index = ['2022-04-26','2022-04-27', '2022-04-28']
# 칼럼명 변경
df1.columns = ['c1', 'c2']
df2.columns = ['c2', 'c3']
# 데이터프레임 덧셈 연산
print(df1+df2)