본문 바로가기
데이터 어쩌구/전처리 및 시각화

[프로젝트] 시각화 데이터프레임 조작하기

by annmunju 2022. 4. 6.

<dataframe 조작하기>

왜 어렵지.. 컬럼명 바꾸고 자리 뒤집고 맨날 하면서 맨날 헷갈려서 고생중

 

1.

df.drop(['Unnamed: 0','Unnamed: 0.1', '정류장_ID'], axis=1)

데이터 프레임 생성하면 자꾸 새로운 인덱스가 추가됨. 그거 삭제하는 방법 drop.

axis는 열기준, 행기준 지정
read_csv() 에서 index_col 미리 지정해주기 : 인덱스로 지정할 열이름 / False (인덱스 한칸 밀려있는 상황일 때, 자체적으로 인덱스 만들어서 0~n 생성)

 

2.

여러 변수 출력 코드

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity="all"

 

3.

거리를 측정하는 haversine 모듈

from haversine import haversine
haversine((경도, 위도), (경도, 위도)) #km

 

4.

진척상황을 알려주는 tqdm 모듈

from tqdm import tqdm
for i in tqdm(range(100)):
    ...

 

5.

피봇테이블 : 특정 기준으로 총 합계나, 평균 등을 계산하고 싶을때

pd_table = pd.pivot_table(df, index=[...], aggfunc='...')
pd_table.reset_index(inplace = True)

 

6.

첫번째 행을 column으로 지정하기

df.rename(columns=df.iloc[0]).drop(df.index[0])
# rename으로 column이름 변경 후 첫번째 index를 drop해 제거

 

7.

컬럼명을 바꾸고 싶을 때는 rename

df.rename(columns={"정류장_ID":"표준버스정류장ID"}, inplace=True)

 

8.

맥에서 그래프 그릴때 한글 깨짐 복구

from matplotlib import rc
plt.rcParams["axes.unicode_minus"] = False 
rc("font", family="Arial Unicode MS") # Windows: Malgun Gothic 
# %matplotlib inline 
get_ipython().run_line_magic("matplotlib", "inline")

 

9. 날짜 데이터

  • 날짜 데이터를 Datetime 형태로 변환 : pd.to_datetime
  • 요일로 변환 : datetime.day_name()

 

10.

인덱스 순서를 조정하고 싶다? reindex

df.reindex(index=['순서대로','작성한','인덱스'])

 

11.

데이터 열들 중 중복된 항목 제거하고 싶다면 df.drop_duplicates

 

12.

quantile

df.quantile(q=0.5) # 2분위수(50%)에 해당하는 값을 찾을 수 있음

 

13.

groupby

df.groupby(['사용년월'],as_index=False).sum()
# df에 사용년월 행을 기준으로 그룹화

 


 

<지도 시각화>

folium 을 사용한 지도 시각화

import folium
# 지도 그리기
m = folium.Map(location=[경도, 위도], zoom_start=n)
# 마커 추가
folium.Marker(location=[경도, 위도],
             icon=folium.Icon(...),
             popup='...').add_to(m)
# 실행
m
# 저장하기(html)
m.save('new_map.html')
folium.Circle(location=(lat , lng),
              radius=100, # 반경
              fill=True, 
              color='blue',
              popup=folium.Popup(name, max_width=100)) # 클릭하면 나오게 할 문구

 

<시각화>

1. Line plot

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot()

ax.plot(X1, Y1, label='first')
ax.plot(X2, Y2, label='second')
ax.plot(X3, Y3, label='third')

ax.legend()

plt.title('Title', fontsize=15)
plt.show()

2. heatmap

plt.figure(figsize=(30,5))
sns.heatmap(data = df, 
            cmap='YlGnBu', # 색 테마
            annot=True, # 안에 데이터 표기할까?
            fmt = '.3f', # 얼마까지 보여줘(포매팅)
            vmin=0, # 최소값
            vmax=2200) #최대값
plt.show()

3. boxplot 그려보기

fig, ax = plt.subplots(1, 2, figsize= (10,10))
ax[0].boxplot(data=df, x='출근')
ax[1].boxplot(data=df, x='퇴근')
plt.show() 

subplots로 나눠서 한 화면에 2가지 그래프를 보여줄 수 있음.

728x90