새로운 모듈로 들어갔으니 다시 1일차!
[6일차(1일차)]
<파이썬 실전 적용 & 판다스 이론>
* 3V : Velocity+Volume+Variety
* 범주(명목, 서열) / 수치(등간, 비율)
* DIKW 이론
* 비정형데이터는 정해놓은 구조는 없지만 정성적 연구에 활용도 높다(X)
* 빅데이터 가치 산정이 어려운 이유: (활용다변화, 가치변화, 새 가치창출)
* 빅데이터활용테크닉 : 유전알고리즘 등 7가지 ※ Module2_1_4_pdf 참고
[7일차(2일차)]
<기본문법>
* 대표적인 공백 문자 : “ “ “\t”(탭) “\n”(줄바꿈)
* .lower(), .upper(), .replace(), .split()
: 위 “문자열”메소드들은 문자열을 직접 수정X, 새로운 값을 생성!
: 새로운 변수 지정해서 처리한 값을 넣어줘야만 한다!
: .append() 와 달라!
* text[i].startswith(“k”)
* 숫자와 문자는 +로 더해 문장을 만들 수 없다
—> str(숫자) + 문자 또는 f”{숫자형변수이름} 문자”
—> str(average)+”점” = f”{average}점”
<디버깅 에러>
* 리팩토링 : 동일한 동작을 하는 코드를 다른 방식으로 짜는 것
* SyntaxError : “:” 안찍어줘서 발생하는 경우가 대부분이다.
* 에러피하기 : try : except 에러명 :
<Pandas>
* DataFrame : 여러개의 Series 가 열을 이루고 있는 자료형
* Series : DataFrame에서 각 열만 떼온 것. = df[“칼럼이름”]
* obj : df에서 문자열(str)
* df 변환하려면 다시 덮어주는 작업이 필요!
* df = pd.read_csv(“주소”)
* 데이터프레임에 시리즈 데이터 새로 만드는(추가)법
—>pd.Series([1,2,3,4], index=[“a”, ~,~,~], name=“~~”)
* 칼럼 추가하기 : df[“-”] = 리스트 등
* df.info() : 만 print없이도 출력됨 / df.head() / df.tail() /df.shape()
* df[“칼럼명”].value_counts()
* 각 열에 대해 한번에 바꿀때 : for i in columns:
df[i]=df[i]. ~~~
* df.sort_values(“칼럼명”, ascending = True) : 오름차순(작~큰)이 기본
<형 변환>
* df[“-”].astype(int)
* pd.to_numeric() : 숫자 자료형으로 바꿈 —> int 또는 float
* pd.to_datetime() : 날짜도 자료형이다.
* df[“-”].dt.year / .dt.month / .dt.day / .dt.dayofweek
* df[“-“].str.replace(“,”, “”) <— object형 전용 replace
* for i in columns: *obj일때
df[i]=df[i].str.replace('-','0')
<map 함수>
* map() 함수 : 특정 열(칼럼) 전체를 변환하는데 사용
※ (replace는 일대일 / map은 여러값에 대한 변경)
—> 보통 map(딕셔너리) <—df[“요일”].map(week)
—> df[“해당열”] 또는 리스트, 튜플 등에 결과 반환
—> df[].map(적용할 함수, 적용받을 대상) => map(int, input().split())
<apply 함수>
* apply() : map보다 더 다채롭게 사용 가능! <- 함수를 쓸 수 있으니까!
* 반환할 변수 = df[“이용할칼럼”].apply(함수명 또는 lambda x : 리턴값)
* lambda e : = 이용할칼럼 값이 어떠한 조건일 때~~
—> (lambda e : "눈/비" if e=="눈" or e=="비" else e)
—> (lambda e : "혼잡" if e>=8000 else "원활")
—> (lambda e: e.split()[1]) *추가조건없고 끝 (시구동-> 구)
—> df[“고령”] = df[“노인구”].apply(lambda e : “o” if e>=0.14 else “X”)
<— 새로운 칼럼은 기존 칼럼에 apply된 값이 들어가는 거다!!!
* if ~~ return ~~ 문법
—> def weather(e):
if e=='눈' or e=='비':
return '눈/비'
else:
return e
[8일차(3일차)]
<groupby를 이용한 정제>
* df.groupby(“기준칼럼”)[“보고싶은칼럼”].mean() *안될땐 [[ ]] 해라
———> 보고싶은칼럼 여러개면 —> (“-”)[[“-”, “-”]]
* df.groupby([“기준칼럼”, “기준칼럼”]).max() : 전체적 최대값보여줘
* df.groupby(“무엇을 기준으로”)[“볼 값”].계산()
<조건식>
* 판다스 논리연산자 : & | ~(not) 부등호는 한개씩만 사용해서 논리써라
* df[ 조건식 ] <—— df[ ( ) & ( ) ]
<loc, iloc함수 이용한 데이터 추출>
* loc[ ] : 파이썬에서 [인덱스숫자]로 추출한것처럼 df에서 데이터 추출
—> df.loc[보고싶은행 인덱스, “보고싶은칼럼”]
*들어간 숫자는 인덱스값이다 —> 4번째행 = 3
—> df.loc[[24, 67, 126], [“—”, “—”]]
—> df.loc[ 인덱싱도 가능 ] <— 이상/이하
* df.loc[ ( ) & ( ) , “-” : ”-”] ※행, 열에 boolean도 가능
※ loc는 이상이하 / iloc는 이상미만
* iloc[ ] : 파이썬의 인덱스와 동일 <— (0부터 시작)
—> df.iloc[행의위치, 열의위치] * df.iloc[][] 도 가능
—> 이름도 가능 : df.iloc[0][“Rating”]
* 추출한 데이터 메소드 이용해 추가 처리 가능
—> df.sum(axis=0) <-열방향(세로) / df.sum(axis=1) <-행방향(가로)
<데이터 정제>
* df.sort_values(“칼럼이름”) ※기본이 오름차순(“”,ascending = True)
: 특정칼럼을 기준으로 전체 데이터를 정렬
* df_sorted.head(10) <— 상위 10개 출력
* df.reset_index() ※기본이 drop = False : 삭제X
* df.drop( “행/열이름”, axis = o(행) 또는 1(열) ) : 전체 삭제
—> df = df.drop(["중개소재지", "본번", "도로명", "거래유형"], axis = 1)
* df = df.rename(columns = {“전” : “new”} ) : 칼럼(열)이름 바꿀때
* round(df["전용면적"]/3.3, 2) *round(,2): 점 두번째 자리에서 반올림
<결측치(Null=NaN) 처리>
* df.isnull() : 값이 있으면 False - 근데 테이블로 나와 보기 힘들어
——> df.isnull().sum()
* df.fillna(대체값) ——> df[“청소년”].fillna( int(df[“청소년”].mean()) )—>근데생각해보면 이거랑 같다: df[“청소년”] = int(df[“청소년”].mean())
—>fillna는 ‘결측치’ 채우는 것/ 정상값까지 다 바꾸는 것과는 완전 다르다
* df.dropna(subset = “청소년”) : 해당열 행결측치 삭제
* df.dropna() : 데이터가 누락된 행 삭제
※ ignore_index=True : 결측치 삭제한 df 인덱스 재정렬 깔끔하게
<concat, merge 함수 이용한 데이터 병합>
* concat() 함수 : 단순히 A+B
——>pd.concat( [df1, df2], axis=0, join=“inner”,ignore_index= True)
※ axis = 0 : 위아래로 합쳐라
※ join=“outer” : 합집합 <— 결측치(NaN,낫a#) 대처 필요.
* merge() 함수 : 조건에 따라!!
—>df_merge
= pd.merge( df1, df2 , on=df1 또는 “칼럼명”, how= “교합왼오”)
※ on, how : on 해준 열에 대해 교집? 합집? (교,합,왼,오)
※ 데이터프레임 대괄호 X (concat과 차이점)
* concat() 과 merge() 의 차이점이라 한다면!! on이 있는가 없는가.
'EEE > 파이썬' 카테고리의 다른 글
[SQL 시작만 N번째?] 데이터베이스란? SQL은 뭔 (0) | 2024.04.04 |
---|---|
[파이썬 시작만 N번째?] 실무에서 사용할 능력 키우기_(3) : Pandas 활용 (0) | 2024.03.28 |
[파이썬 시작만 N번째?] 실무에서 사용할 능력 키우기_(1) (1) | 2024.03.28 |