Series ~ data#2

#Series
series : 1차원 데이터 
#DataFrame
ex) tmp = pd.Series([1,2,3,4,5], index = ['a','b','c','d','e']) #index요소도 지정할 수 있다.
dataframe : 2차원 데이터
ex)tmp = data{'a':[1,2,3,4,5],
              "b":[5,4,3,2,1]} #a는 key, [1,~,5]는 value -> dict형태
df = pd.DataFrame(tmp) #tmp를 dataframe으로 변환
df = pd.DataFrame(tmp, columns = ['a'])#원하는 column만 가져올 수 있음
#Index
df.index.name = 'Carry' #index이름을 붙힐 수 있음
df.reset_index(drop=True, inplace=True)#index초기화
df.sort_index(ascending=False)#index를 내차순으로 초기화
#파일 저장
df.to_csv('test_csv.csv', encoding='utf-8-sig', index = True or False)#index존재 여부 결정 가능
df.to_excel('test_excel.xlsx')#excel로 저장
#파일 열기
df = read_csv('test_csv.csv')
df = read_csv('test_csv.csv', skiprows=[1,3,5], nrows=4)#파일에서 rows를 원하는 값만 추출 가능, skiprows는 원하는 row를 스킵, nrows는 원하는 개수만큼 추출
df = read_exccel('test_excel.xlsx', index_col = 'Carry')#파일을 불러올 때 index이름을 원하는 것으로 변경 가능
#data확인
data.head()#위에 5개 data보여줌
data.tails#아래에 5개 data보여줌
data.info()#data의 nan값이나 각 정보를 보여
data.unique#정보를 가져오지만 중복되지 않게 가져
#data가져오기
df.columns[0]#columns또한 index로 slicing가능하다
df[df.columns[-1]]#가장 오른쪽 data가져오기
df[['이름','키']][:3]#columns중 이름,키만 index 2번째 까지 대이터 추출
#loc, iloc사용
df.loc[['1번':'2번'],['영어':'수학']]#index중 1번,2번(index)에서 영어,수학(columns) 값만 가져오기, slicing(2번 포함, 수학 포함)가능
df.iloc[[0:2, 2:4]]#loc의 원소를 index로 생각하면 편함,0~1index, 2~3columns
#조건이용해서 원하는 값 찾기
df[df['영어']>=90]
df.loc[df['영어']>=90, '수학']#영어 값이 90이상인 rows중 수학 값만 가져오기
filt = df['SW특기'].str.contains('Java', nan=False)#Java가 들어간 값만 filt에 넣기, nan이 있을 경우 False로 지정
df[filt]#위 조건에 맞는 df값이 출력된

결측치 ~ 그래프 스타일

결측치 : 비어 있는 데이터 df.fillna(~) : NaN을 ~로 채움 df.dropna() : NaN을 포함하는 데이터를 삭제 axis : index / columns - row / column 삭제 how : any / all - 하나라도 있으면 삭제 - 모두 NaN이면 삭제

정렬 df.sort_values(키 이름) : 키 값 기준으로 오름차순 정렬 ascending=False : 내림차순 정렬 df.sort_values([키 리스트], ascending=[boolean 리스트])도 가능 df.sort_index() : 인덱스순 정렬

수정 df[키 이름].replace({"기존 값" : "새로운 값"}) df[키 이름].str.lower() : 문자열 데이터를 소문자로 변경 df[키 이름].str.upper() : 문자열 데이터를 대문자로 변경 df[키 이름] = df[키 이름] + 추가할 데이터 df.loc : 셀 단위 수정 가능

추가 df[새로운 키 이름] = 데이터 : 컬럼 추가 df.loc[index 이름] = 새로운 행 데이터 : 행 추가

삭제 df.drop(columns=[키 리스트]) : 컬럼 삭제 filter = df에 대한 조건식 df.drop(index=df[filter].index) : 조건에 해당하는 row 삭제

함수 적용 df[키 이름] = df[키 이름].apply(함수 이름)

그룹화 df.groupby(키 이름) : 그룹화 df.groupby(키 이름).get_group(키 값) : 해당 키 값을 가진 그룹이 반환 df.groupby(키 이름).mean() : 그룹의 평균이 반환 df.groupby(키 이름).size() : 그룹의 크기가 반환 df.groupby(키 이름).sum() : 그룹 데이터의 총합이 반환 df.groupby(키 이름).count() : 그룹 데이터 수가 반환

그래프 기본 import matplotlib.pyplot as plt

x = [1,2,3,4] y=[2,4,8,16] plt.plot(x,y) : 그래프 생성 plt.title("line graph") : 그래프 제목 설정

축 plt.xlabel("x-axis") plt.ylabel("y-axis") : 축 이름 설정 color : 축 이름 색상 설정 loc : 축 이름 위치 설정

plt.xticks([2,4,6,8,10]) plt.yticks([10,20,30]) : 축의 틱 설정

범례 plt.plot(x,y,label = "data") plt.legend() : 그래프의 범례 생성 loc : 범례 위치 설정

스타일

x = [1,2,3,4] y=[2,4,8,16] plt.plot(x,y) linewidth : 그래프 선의 굵기 설정 marker : 그래프 마커 생성. 'o' - 동그라미, 'v' - 화살표, 'x' - x자모양 등등 markersize : 그래프 마커의 크기 설정 markeredgecolor : 그래프 마커의 테두리 색깔 설정 markerfacecolor : 그래프 마커의 채우기 색깔 설정 linestyle : 그래프 선의 스타일 설정. none - 없음, ':' - 점선, '--' : 실점선? 등등 color : 그래프 선 색깔 설정.

스타일의 포맷 : 색, 마커, 라인스타일 plt.plot(x,y,'ro--')