<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
'데이터 어쩌구 > 전처리 및 시각화' 카테고리의 다른 글
[Numpy] 이미지 array (3, 4차원) 다루기 (0) | 2023.08.26 |
---|---|
[Pandas] DataFrame 고급 사용 (0) | 2023.08.26 |
[객체지향] EDA : 배경지식 (0) | 2022.01.17 |
[객체지향] Pandas (0) | 2022.01.17 |
[객체지향] Numpy (0) | 2022.01.06 |