function ClickConnect() {
var buttons = document.querySelectorAll("colab-dialog.yes-no-dialog paper-button#cancel");
buttons.forEach(function(btn) {
btn.click();
});
console.log("1분마다 자동 재연결");
document.querySelector("#top-toolbar > colab-connect-button").click();
}
setInterval(ClickConnect,1000*60);
# python 빌트인 os 라이브러리 import 및 파일 위치 확인 # 1주차 실습을 위한 pandas 라이브러리 import 및 pd로 alias 지정 import os import pandas as pd os.listdir('./drive/MyDrive/machine_learning_data') > ['friend.csv'] # 데이터 폴더 src 변수 할당 base_src = './drive/MyDrive/machine_learning_data' # friend.csv 파일 src 변수 할당 friend_src = base_src+"/friend.csv" # pandas의 read_csv => 데이터 불러오기 ## encoding= 데이터 인코딩 방식 설정 df = pd.read_csv(friend_src,encoding='utf-8') # 상위 5개 파일 읽기 df.head() > name age job 0 John 20 student 1 Jenny 30 developer 2 Nate 30 teacher 3 Julia 40 dentist 4 Brian 45 manager # new_friend.csv 파일 src 변수 할당 new_friend_src = base_src + "/new_friend.csv" # pandas의 to_csv => 데이터 프레임 저장 ## index = True or False =>데이터 저장시 새로운 인덱스를 생성할지 말지 ## encoding => 데이터 인코딩 방식 설정 df.to_csv(new_friend_src,index=False,encoding='utf-8')
# series type을 만드는 2가지 방법 ## DataFrame에서 특정 컬럼을 선택해서 만든다. series = df[column name] series > 0 John 1 Jenny 2 Nate 3 Julia 4 Brian 5 Chris Name: name, dtype: object # pd.Series 함수를 통해서 만드는 것도 가능 series = pd.Series([1,2,3,4] series 0 1 1 2 2 3 3 4 dtype: int64 # pd.Series의 parameter(인자) 확인 ## index => 할당값의 지정 이름, 중복 가능['a','a','b','c'] ## dtype => 대표적: int, float, string, boolean 등 series = pd.Series([1,2,3,4],index=['a','b','c','d'],dtype=float) series > a 1.0 b 2.0 c 3.0 d 4.0 dtype: float64 # Series Ordering ## sort_values => values값 정렬 ## sort_values의 ascending=True or False series = pd.Series([10,2,5,4],index=['a','b','c','d'],dtype=float) series.sort_values(ascending=True) # 오름차순 > a 2.0 d 4.0 c 5.0 a 10.0 dtype: float64 ## sort_index => index값 정렬 series = pd.Series([10,2,5,4],index=['z','f','c','d'],dtype=float) series.sort_index() > c 5.0 d 4.0 f 2.0 z 10.0 dtype: float64
# DataFrame을 만드는 방법 df = pd.DataFrame({'a':[2,3],'b':[5,10]}) df > a b 0 2 5 1 3 10 df = pd.DataFrame([[2,5],[3,10],[10,20]],columns=['a','b']) df > a b 0 2 5 1 3 10 2 10 20 ## columns를 통해서 columns 이름 지정 가능 ## index를 통해서 index 이름 지정 가능 ## dtype를 통해서 data type 지정 가능 df = pd.DataFrame([[2,5],[3,10],[10,20]],columns=['a','b'],index=['가','나','다'],dtype=float) df > a b 가 2.0 5.0 나 3.0 10.0 다 10.0 20.0 ---
# friend.csv 불러오기 df = pd.read_csv(friend_src,encoding='utf-8') df > name age job 0 John 20 student 1 Jenny 30 developer 2 Nate 30 teacher 3 Julia 40 dentist 4 Brian 45 manager 5 Chris 25 intern # index 2번에 해당하는 row 가져오기 df.iloc[2] # Series 형태로 가져옴 >name Nate age 30 job teacher Name: 2, dtype: object df.iloc[[2]] # DataFrame 형태로 가져옴 > name age job 2 Nate 30 teacher # column job에 해당되는 데이터 가져오기(1) df['job'] > 0 student 1 developer 2 teacher 3 dentist 4 manager 5 intern Name: job, dtype: object # column job에 해당되는 데이터 가져오기(2) df.loc[:,'job'] > 0 student 1 developer 2 teacher 3 dentist 4 manager 5 intern Name: job, dtype: object # 슬라이싱 기능을 통해 여러 행 가져오기 df.iloc[[2,3]] # 슬라이싱 기능 사용(x) > name age job 2 Nate 30 teacher 3 Julia 40 dentist df.iloc[2:4] # 슬라이싱 기능 사용(ㅇ) > name age job 2 Nate 30 teacher 3 Julia 40 dentist # 슬라이싱을 사용하면 일일히 다 입력하지 안아도 여러값 추출 가능 (중요!) # 슬라이싱 기능을 통해 여러 열 가져오기 df.iloc[:,[1,2]] # 슬라이싱 기능 사용(x) > age job 0 20 student 1 30 developer 2 30 teacher 3 40 dentist 4 45 manager 5 25 intern # 슬라이싱 기능을 통해 여러 열 가져오기 df.iloc[:,1:3] # 슬라이싱 기능 사용(ㅇ) > age job 0 20 student 1 30 developer 2 30 teacher 3 40 dentist 4 45 manager 5 25 intern # "많이 하는 질문!" ```iloc VS loc 뭐가 다른거죠 ?????``` - iloc는 인덱스와 컬럼을 리스트 배열로 선택하는 것! - loc는 인덱스와 컬럼을 문자로 선택하는 것! - 따라서 상황에 맞게 선택하는 것이 중요!
import numpy as np df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D']) > A B C D 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 ## ['B','C'] 컬럼을 삭제하겠다. axis=0 or 1 => 0:row 방향 , 1:col 방향 df.drop(['B', 'C'], axis=1) > A D 0 0 3 1 4 7 2 8 11 ## ['B','C'] 컬럼을 삭제하겠다 df.drop(columns=['B', 'C']) ## index 0과 1을 삭제하겠다. df.drop([0, 1]) > A B C D 2 8 9 10 11 # 각자 df를 찍어보아라. 바뀐게 있는가? 그대로 일 것이다. # 이유는 df = df.drop(~~) => 변수 할당을 안해주었기 때문이다. # 만약 변수할당이 귀찮다면 parameter로 inplace=True를 주어라. df.drop(~~~,inplace=True)
# friend.csv 불러오기 df = pd.read_csv(friend_src,encoding='utf-8') df > name age job 0 John 20 student 1 Jenny 30 developer 2 Nate 30 teacher 3 Julia 40 dentist 4 Brian 45 manager 5 Chris 25 intern # df를 하나 복사하기(원본 데이터 유지를 위해서) temp = df.copy() # age 컬럼 모든 값 변경 temp['age'] = 20 temp > name age job 0 John 20 student 1 Jenny 20 developer 2 Nate 20 teacher 3 Julia 20 dentist 4 Brian 20 manager 5 Chris 20 intern # 인덱스 2번, 컬럼 age => 15로 바꾸기 temp.loc[2,'age'] = 15 temp > name age job 0 John 20 student 1 Jenny 20 developer 2 Nate 15 teacher 3 Julia 20 dentist 4 Brian 20 manager 5 Chris 20 intern # 슬라이싱을 기능을 활용하면 내가 원하는 범위까지 잘 바꿀 수 있겠지??
저자는 실무에서 데이터 분석을 하기 위해서 전처리를 해야하는데, 위에 소개한 방법들을 많이 사용하곤 한다. 하지만 전처리를 할 때 정말 다양한 예외 상황들이 발생을 하는데, 처음에는 어떻게 접근해야할지 막막한 감정을 느꼈었다. 하지만 놀랍게도 다시 기초를 탄탄다지고 다시 전처리 업무를 했을 때, 예전보다 훨씬 퍼포먼스가 향상됨을 느꼈다. 그렇다고 너무 기초만 해서는 안되고, 위 방식들을 응용해서 다양한 방법으로 데이터 전처리 접근을 하길 권장한다.
안녕하세요. 글 잘보았습니다. 첫번째 기본 사용법에 clolab이라 오타가 나서 알려드립니다.