2022.06.27~2022.07.01
구름 X 전주 ict 이노베이션 스퀘어의 온라인 코딩교육 내용을 정리하였습니다.
첫 프로젝트는 어쨌든 끝났지만, 정신이 없어 이제야 올립니다.
수현이 목소리는 언제 들어도 너무 예쁘다
넘파이
- 동일 자료형을 가지는 값들이 (N차원(rank, axis)의)배열 형태로 존재함
- 각 값들은 양의 정수로 index를 가짐
- ndarray를 array로 줄여 표현하기도 함.
- ndarray는 같은 데이터 타입만 담을 수 있고, 다른 타입이 섞인 경우 값이 더 큰 데이터 타입으로 형이 변환됨
- .astype('자료형') 혹은 .astype('np.자료형')으로 직접 데이터의 타입을 바꿀 수도 있다
- 인덱싱, 슬라이싱: 연속된 데이터를 추출하는 건 슬라이싱, 리스트나 ndarray형태의 인덱싱 집합으로 추출하는 건 팬시 인덱싱, T/F가 나오는 인덱싱 집합으로 추출하는 건 불린 인덱싱
- 정렬: np.sort(list명), np.argsort(리스트명). sort 디폴트는 inplace=True, axis=-1
- 선형대수적 연산 가능(np.dot(내적), np.transpose(전치행렬) 등)
- ndarray로도 데이터를 불러와 가공할 수 있음
판다스
- 하나의 열, 하나의 행을 시리즈라 하고 열과 행들을 모아놓은 것을 데이터프레임이라 함
- df.head(), df.tail(), df.describe(), df.info()로 살펴볼 수 있음
- loc는 이름 인덱스, iloc는 위치 인덱스(df.loc[로우(인덱스)명, 칼럼명] / df.iloc[로우(인덱스)번호, 칼럼번호])
- df 내 특정 조건 확인: df[df["칼럼명"].str.contains("a")] (df의 '칼럼명' 칼럼에서 'a'를 포함하는 데이터를 보여줌) (startswith, endswith도 동일하게 사용)
- 시리즈들의 기본은 ndarray: df['칼럼명'] = df['칼럼명']+1을 해주는 경우 칼럼명 칼럼의 모든 데이터에 1이 더해짐
- 피벗테이블: pd.pivot_table(df, index=Ind, aggfunc='mean') ((인덱스를)Ind에 따라 나눈(groupby) df에 '평균' 집계함수 연산 적용)
- 삭제: df.drop([삭제할 것], axis=0) (axis=1의 경우 컬럼 삭제)
- 인덱스, 컬럼명: df.index / df.columns
- 이름 바꾸기: df.rename(index={'a':'A'}, inplace=True) (컬럼명 바꿀땐 index 대신 columns, inplace의 디폴트값은 False)
- 정렬하기: df.sort_values(by='col1', inplace=True) (sort_index도 가능) (col1칼럼의 데이터 순으로 정렬(오름차순), inplace 디폴트값 False, 내림차순은 ascending=False)
- 복사: `=`는 shallow copy, .copy()가 deep copy
shallow: 데이터 주소까지 복사하므로 복사된 객체를 변경하면 원래 객체까지 변경됨
deep: 객체만 복사하여 새 주소에 할당함
mutable(바뀔 수 있는 것)은 값을 바꿔도 같은 메모리 주소를 갖게 됨(=값이 같이 변경됨)
immutable(바뀔 수 없는 것)은 재할당이 이루어지면서 다른 메모리 주소를 갖게 됨(=다른 값을 가짐)
- df.reset_index(): 기존의 인덱스를 칼럼으로 끌어내림
- 데이터 합치기: df_A.join(df_B), pd.merge(df_A, df_B), pd.concat([df_A, df_B])
- df.div(나눌 값): df의 데이터들을 나눌 값으로 나눔
#카테고리 만들기
ages = [0, 2, 10, 21, 23, 37, 31, 61, 20, 41, 32, 100]
bins = [0, 15, 25, 35, 60, 99]
labels = ["미성년자", "청년", "중년", "장년", "노년"]
cats = pd.cut(x=ages, bins=bins, labels=labels)
age_df = pd.DataFrame(ages, columns=['ages'])
age_df['ages_cat']=cats
age_df
ages | ages_cat |
0 | NaN |
2 | 미성년자 |
10 | 미성년자 |
21 | 청년 |
23 | 청년 |
37 | 장년 |
31 | 중년 |
61 | 노년 |
20 | 청년 |
41 | 장년 |
32 | 중년 |
100 | NaN |
- df.groupby('A').sum() (A칼럼 값에 따라 그룹을 나누고 같은 그룹 값끼리 더함. ['A', 'B']처럼 리스트를 넘겨줘도 됨)
데이터 시각화 (한글폰트 코드만 정리)
- 방대한 양의 자료의 특징을 한 눈에 파악할 수 있도록 도표나 차트로 정리한 것
#아래 코드 실행 뒤 런타임 초기화 후 재실행
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
!apt-get update -qq
!apt-get install fonts-nanum* -qq
path = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font_name = fm.FontProperties(fname=path, size=10).get_name()
print(font_name)
plt.rc('font', family=font_name)
fm._rebuild()
mpl.rcParams['axes.unicode_minus'] = False
파이썬 300제(226~)
datetime, time
import datetime
datetime.datetime.now() #현재시간 출력
#datetime의 timedelta를 사용해 오늘부터 5일, 4일, 3일, 2일, 1일 전 날짜 출력
today = datetime.datetime.now()
for day in range(5, 0, -1):
delta = datetime.timedelta(days=day)
date=today-delta
print(date)
#현재시간을 시간:분:초로 표현
now = datetime.datetime.now()
now.strftime("%H:%M:%S")
#time, datetime을 이용해 1초에 한번 현재 시간 출력 코드 작성
import time
for i in range(5): #5번 반복
now = datetime.datetime.now()
print(now)
time.sleep(1) #1초간 프로세스 정지
class
class Human:
def __init__(self, name, age, sex): #생성자
self.name = name
self.age = age
self.sex = sex
def __del__(self): #소멸자
print("나의 죽음을 알리지 말라")
def who(self):
print(f"이름: {self.name}, 나이: {self.age}, 성별: {self.sex}")
def setInfo(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
areum = Human("조아름", 25, "여자")
areum.who() #이름: 조아름, 나이: 25, 성별: 여자 출력
areum.setInfo("조아름", 26, "여자")
areum.who() #이름: 조아름, 나이: 26, 성별: 여자 출력
del areum #"나의 죽음을 알리지 말라" 출력
class 부모:
def __init__(self):
print("부모생성")
class 자식(부모):
def __init__(self):
print("자식생성")
super().__init__()
나 = 자식() #print("자식생성") 이후 print("부모생성")
예외처리
per = ["10.31", "", "8.00"]
for i in per:
try: #실행코드
print(float(i))
except: #예외시 수행코드
print(0)
else: #예외발생x시 수행코드
print("Clean Data")
finally: #항상 수행할 코드
print("변환을 수행합니다.")
10.31
Clean Data
변환을 수행합니다.
0
변환을 수행합니다.
8.0
Clean Data
변환을 수행합니다.
하고싶은 것, 해야한다고 생각하는 것은 많은데 체력이 따라주지 않네요. ver2에서 하던 데이터 분석은 언제쯤 마저 할 수 있을까요.
'STUDY' 카테고리의 다른 글
파이썬 스터디 ver3. 4주차 (1) | 2022.07.24 |
---|---|
파이썬 스터디 ver3. 3주차 (0) | 2022.07.14 |
파이썬 스터디 ver3. 1주차 (0) | 2022.06.27 |
파이썬 스터디 ver2. 5주차 (0) | 2022.05.16 |
파이썬 스터디 ver2. 4주차 (0) | 2022.05.12 |