[TIL] 21.05.06 dataframe

Seung Joo·2021년 5월 14일
0

TIL

목록 보기
1/31
post-thumbnail

1. 행, 열 변환된 DataFrame 만들기

df1_trans = df1.transpose() #열과 행의 위치를 변환해준다
df1_cp = df1_trans.rename(columns = df1.iloc[0]) #컬럼명 재지정
df1_cp = df1_cp[1:] #컬럼이 두개가 되는 현상을 해결한다.

처음 transpose()를 하게되면 인덱스가 따라오는데 숫자 인덱스를 제거하는 작업 때문에 시간 많이 삽질했지만, 삽질해서 이해함..ㅠ

2. subplot 만들기

plt.figure(figsize=(15,5)) #플롯 사이즈 지정
plt.subplot(1,2,1) #1행, 2열 1번째 플롯
plt.title('008770') #타이틀 지정
df1_cp['FCF'].plot.bar() #바 플롯 생성
plt.subplot(1,2,2) #1행 2열 2번째 플롯
plt.title('035250')
df2_cp['FCF'].plot.bar()
plt.show()

3. 출력시 한글 인코딩 깨짐 해결

df1.to_csv("df1.csv", encoding='utf-8-sig') #인코딩 utf-8-sig을 통해 한글깨짐 해결

4. cross-tabulation

pd.crosstab(pp.species, pp.sex) #교차표만들기

cross-tabulation을 이해하지 못해서 하나하나 describe해서 했다가, 전에 봤던 코드가 생각나서 찾아보고 해결함. 까먹을 것 같으니 일단 기록.

5. 날짜 필요항목 추출하여 새로운 데이터 생성

Date_2 = []
for d in tsla_df['Date']: #2010-10-20식으로 되어있는 날짜 데이터
    d_temp = d[:4]        #년도만 슬라이싱
    Date_2.append(d_temp) #새로운 리스트에 저장
tsla_df_copy = tsla_df    #카피본 만들기
tsla_df_copy['Date_2'] = Date_2 #새로운 열 생성하여 집어넣기
date_list = tsla_df_copy['Date_2'].values #년도 목록 가져오기
date_list2 = [] #년도 목록 리스트 만들기(나중에 plot에 legend용)
temp = None 
for date in date_list:
    if temp != date:
        date_list2.append(date)
        temp = date
date_list2 #2010, 2011, 2012 ....의 리스트
plt.figure(figsize=(15, 5)) #플롯 사이즈 지정
for date in date_list2: #※ 년도 구분 시계열 그래프 생성하기
    plt.plot(tsla_df_copy[(tsla_df_copy['Date_2'] == date)]['Close'])
plt.xlim(0, tsla_df_copy['Close'].last_valid_index() - 10) #x축 limit지정
plt.ylim(0, 550) #y축 limit지정
plt.legend(date_list2) #추출해두었던 년도 리스트로 라인색상별 년도 legend
plt.title('Stock price Movement Grouped by Year on Close')
plt.ylabel('Close Price')
plt.grid(True, axis='y') #가로 구분선 출력
plt.show()

년도 추출은 전에 해봤던 거였는데 기록을 안해놓으니 까먹어서 찾는데 또 시간을 버렸다. 기록의 중요성을 깨닫는 시간..

6. 결측치 확인

df.dropna(axis=0, how='any') #결측치 제거 how=(any, all등)
df.reset_index(inplace=True, drop=True) #※drop사용안할시 원래 인덱스 남아있음주의
df.isnull().values.any() #전체 결측치 확인
df.isna() or isnull().sum() #결측치 갯수 확인
profile
조금씩 천천히

0개의 댓글