1. text, csv 파일 불러오기
- pd.read_csv("파일이름") → df → df.shape으로 내가 원하는 데이터 형태인지 확인
- 구분자 : sep옵션
- index 지정 : index-col=열이름
- 열이름 지정 : names
- 인코딩 설정 오류 나올 때 : 파일 열기시 옵션으로 '인코딩옵션' = 'cp949'로 설정
- 특정 줄을 제외하고 싶을 때 : skiprows=[제외시키고 싶은 행]
- n개 행 불렁기 : nrows=10:10개 행 불러오기
- 결측값으로 인식하라고 알려주는 속성 :na_values=["없는","존재하지않음"]
2. dataFrame을 csv파일로 저장하기
- df.to_csv
- index속성값을 출력할지 안할지 결정 ; index=False(인덱스 저장X)
3.DataFrame의 속성
- 행 인덱스 지정할 때: index
- 열 인덱스 지정할 때: columns\
- 행/열 바꿀 때(전치행렬) : df.T
- 행/열 이름을 list로 추출하고 싶을 때 : df.axes *df.dtypes;컬럼별 데이터타입 확인 가능
- DataFrame을 읽어서 array로 변환하고 싶을 때 : df.values *numpy의 기본 자료구조;array형태(따라서, np.xxxx로 사용하고 싶을 때 array로 바꿔줘야함)
4.DataFrame에서 행/열 추출하기
- 행 인덱스 추출: df.index
- 열 인덱스 추출: df.columns
- 특정 열 인덱스 추출: df['컬럼명'] , df[['컬럼명1','컬럼명2']]
5.인덱스 재설정, 결측값
- index 재설정 : reindex
- 결측값 채우기 : fill_value
6.시계열 데이터
- pd.date_range:시계열 데이터를 다루기 위한 행 인덱스를 만들 수 있음 ex)pd.date_range('07/03/2020', periods=7, freq='D')
7. 속성에 대한 동일한 형태를 가진 여러 개의 df를 합치기
- pd.concat() *R에서는 → rbind()
- 위+아래 합칠 때 : axis=0 (default)
- 좌+우 합칠 때 : axis=1
ex) pd.concat([df1,df2],axis=0)
- join = 'outer','inner'
- 기존 index 무시 : ignore_index=True
8. merge
- how : 병합 방법
- on: 병합 기준 열에 대한 key
ex) pd.merge(df1,df2,how=left, on=기준열);왼쪽에 있는 df1에 맞춰서 outer 조인해라
9. 결측값 확인, 갯수
- 결측값 확인할 때 사용하는 함수: isnull(), notnull
ex)df.isnull():null이면 true, 아니면 → boolean참조로 응용
- 컬럼 단위 결측값 개수 : df.isnull().sum()
- 행 단위 결측값 개수 :df.isnull().sum(1)
- df.mean(), df.std() 연산시 NaN은 제외됨
- 결측값 대체: knn, 회귀모델 예측
ex) df.fillna(0);결측값을 0으로 대체하라
- 결측값 행/열 제거
df.dropna(axis=1) / df.dropna(axis=0)
- 결측값을 다른 값으로 대체: replace
ex) df.replace(np.nan,10): 결측값을 10으로 대체
- 중복값 확인: df.duplicated()
- 중복값 처리: df.drop_duplicate()
10. 유일한 값 찾을 때/유일한 값별로 개수 세기
- 열단위로 유일한 값 찾을 때: unique()
- 유일한 값별로 개수 셀 때: value_counts() → 여러가지 옵션을 줄 수 있음. 매우 중요*****
11. 정규화 작업에 쓰이는 함수
-정규화: 변수들 간의 척도가 다를 경우 → 상호비교X (따라서, 같게 만들어 줘야함)
-numpy: 표준화z(xdata-mean())/std()
*import scipy.stats as ss → ss.zscore(data)
*from sklearn.preprocessing import StandardScaler → StandardScaler().fit_transform(data)
평균 mean은 이상치의 영향을 많이 받기 때문에 이상치는 제거해줘야함.
이상치 제거가 힘들경우 → 표준화 공식에서 평균 대신, 이상치에 덜 민감한 '중앙값' 사용함/IQR사용(IQR = Q3-Q1)
#이상치 제거
from sklearn.preprocessing import StandardScaler
xs=StandardScaler().fit_transform(x) #x의 표준화계수 구하기
xss=xs[xs<5]
plt.hist(xss,bins=np.arange(-3,3,0.2))
#각 데이터에서 평균대신 중앙값으로 표준화계수를 구한 값
from sklearn.preprocessing import RobustScaler
xr=RobustScaler().fit_transform(x)
xrs=xr[xr<5]
plt.hist(xrs, bins=np.arange(-3,3,0.2))
#q1, q3구하기
q1=np.percentile(x,25) #데이터를 오름차순 정렬했을 때 25%까지 추출하는 함수
#연속형 변수를 이항 변수화(0아니면 1로 나누겠다)
from sklearn.preprocessing import Binarizer
x=np.array([[10,-10,1],[5,0,3],[0,7,5]])
#x를 0보다 크면 1, 작거나 같으면 0으로 변환시키겠다.
bi=Binarizer().fit(x)
bi.transform(x)
#x를 4보다 크면 1, 작거나 같으면 0으로 변환시키겠다.
bi=Binarizer(threshold=4).fit(x)
bi.transform(x)
-원핫(1)인코더 : 범주형 변수 → 이항변수화