카테고리 없음

기초 프로젝트 과정에서 새삼 알게된 것들

whateveryouwish 2024. 7. 26. 01:12

Folium

Folium은 파이썬에서 지리 데이터를 시각화하기 위한 라이브러리입니다. 이 라이브러리는 Leaflet.js를 기반으로 하며, 사용자가 지도를 쉽게 생성하고, 다양한 레이어와 마커를 추가할 수 있도록 도와줍니다. Folium은 특히 지리적 데이터를 시각화하거나 웹 기반의 지도 애플리케이션을 만들 때 유용합니다.

주요 기능

  1. 지도 생성: Folium을 사용하면 다양한 유형의 지도를 쉽게 생성할 수 있습니다. 기본적으로 OpenStreetMap을 사용하지만, 다른 타일 서버를 지정할 수도 있습니다.
  2. 마커 추가: 지도에 특정 위치를 표시하기 위해 마커를 추가할 수 있습니다. 마커에는 팝업을 추가하여 추가 정보를 제공할 수 있습니다.
  3. 다양한 레이어: 여러 종류의 레이어를 추가하여 데이터 시각화를 풍부하게 만들 수 있습니다. 예를 들어, Choropleth(지역별 색상 맵) 레이어를 추가하여 특정 데이터를 시각화할 수 있습니다.
  4. 상호작용: Folium은 사용자가 지도를 클릭하거나 확대/축소할 수 있는 상호작용 기능을 제공합니다.
  5. HTML 파일로 저장: Folium으로 생성한 지도를 HTML 파일로 저장하여 웹에서 쉽게 공유할 수 있습니다.

설치 방법

Folium은 pip를 사용하여 쉽게 설치할 수 있습니다:

pip install folium

 

기본 사용 예제

아래는 Folium을 사용하여 기본 지도를 생성하는 예제입니다.

import folium

# 기본 지도 생성 (위도, 경도 지정)
m = folium.Map(location=[37.5665, 126.978], zoom_start=12)  # 서울 중심

# 마커 추가
folium.Marker(
    location=[37.5665, 126.978],
    popup='서울',
    icon=folium.Icon(color='blue')
).add_to(m)

# HTML 파일로 저장
m.save('map.html')

# 지도 출력 (Jupyter Notebook에서)
m

이 코드를 실행하면 서울을 중심으로 한 기본 지도가 생성되고, 마커가 추가된 지도는 map.html 파일로 저장됩니다.

Jupyter Notebook 환경에서는 마지막 줄의 m을 통해 지도를 직접 확인할 수도 있습니다.

Folium은 데이터 분석 및 시각화 작업에 매우 유용하며, 지리적 정보를 효과적으로 표현하는 데 강력한 도구입니다.

 

Pandas)행, 열 크기를 확인하기

 

Pandas에서 .shape 속성은 DataFrame이나 Series의 크기를 확인하는 데 사용됩니다.

이 속성은 데이터의 행(row)과 열(column)의 개수를 튜플 형식으로 반환합니다.

사용법

  • DataFrame의 경우: .shape 속성을 사용하면 (행의 수, 열의 수)를 반환합니다.
  • Series의 경우: .shape는 (데이터의 수,) 형태로 반환됩니다.

예제

아래는 Pandas DataFrame의 .shape 속성을 사용하는 간단한 예제입니다.

 
import pandas as pd

# 예시 데이터 생성
data = {
    '이름': ['홍길동', '이몽룡', '성춘향'],
    '나이': [25, 30, 22],
    '도시': ['서울', '부산', '대구']
}

# DataFrame 생성
df = pd.DataFrame(data)

# DataFrame의 행, 열 크기 확인
print(df.shape)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

(3, 3)

 

이 결과는 DataFrame이 3개의 행과 3개의 열을 가지고 있음을 나타냅니다.

요약

  • .shape: DataFrame의 행과 열의 개수를 확인하는 속성.
  • 결과: (행의 수, 열의 수) 형식으로 반환됨.
  • 유용성: 데이터의 크기를 빠르게 파악할 수 있어 데이터 분석 및 전처리 과정에서 유용합니다.

이와 같이 .shape 속성을 이용하면 데이터의 구조를 쉽게 이해하고, 후속 작업을 계획하는 데 도움이 됩니다.

 

Matplotlib에서 한글 글꼴 적용하기(주피터 노트북, Jupyter Notebook 환경)

그래프 등 시각화를 할 때, 한글 글꼴을 적용하기 위해서는

import matplotlib.font_manager as fm

font_list = fm.findSystemFonts(fontpaths = None, fontext = 'ttf')
font_list[:]

 

위의 코드를 실행을 시키면 저장되어 있는 폰트 목록이 영어 이름으로 쭉 나옵니다.

 

출력된 폰트 이름 목록에서 쓰고싶은 폰트를 골라서 복사해둡니다.

 

저는 'HangeulNuri'가 눈에 띄어 그걸로 복사해뒀습니다.

plt.rc('font', family='fontname')

 

복사해둔 폰트 이름을 family='fontname'에서 빨간 부분에 대체합니다.

 

저의 경우는

 

plt.rc('font', family='HangeulNuri')

 

이렇게 됩니다.

 

그럼 시각화 시에

 

 

Payment_type 안에 무슨 값들이 있는지 알아보고 그 값에 해당하는 개수 count 하기

import pandas as pd

# 예시 데이터 생성
data = {
    'payment_type': ['카드', '바우쳐', '현금', '볼레토', '카드', '바우쳐', '현금', '카드'],
    'amount': [10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000]
}

df = pd.DataFrame(data)

# 고유한 객체와 그 수 카운트
payment_counts = df['payment_type'].value_counts()

# 고유한 객체의 수
num_unique_objects = payment_counts.shape[0]

# 결과 출력
print("고유한 객체의 수:", num_unique_objects)
print("각 객체의 수:")
print(payment_counts)

 

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

 

고유한 객체의 수: 4
각 객체의 수:
카드      3
바우쳐    2
현금      2
볼레토    1
Name: payment_type, dtype: int64

 

각기 다른 데이터셋 merge하기

 

olist_order_payments_dataset 과 olist_orders_dataset 이라는 csv 파일이 order_id로 같은 열을 공유하고 있는 상황에서 pandas 라이브러리를 사용하여 두 데이터프레임을 읽고, 주문 ID를 기준으로 교집합을 찾아 새로운 데이터프레임을 생성합니다.

전체 코드 예시

import pandas as pd

# CSV 파일 읽기
payments_df = pd.read_csv('olist_order_payments_dataset.csv')
orders_df = pd.read_csv('olist_orders_dataset.csv')

# 두 데이터프레임의 교집합을 주문 ID를 기준으로 찾기
merged_df = pd.merge(payments_df, orders_df, on='order_id', how='inner')

# 결과 출력
print("교집합 데이터프레임:")
print(merged_df)

# 교집합 데이터프레임을 CSV로 저장 (선택 사항)
merged_df.to_csv('merged_orders_payments.csv', index=False)

 

코드 설명

  1. CSV 파일 읽기: pd.read_csv()를 사용하여 두 개의 CSV 파일을 각각 DataFrame으로 읽어옵니다.
  2. 교집합 찾기: pd.merge() 함수를 사용하여 두 DataFrame을 order_id 열을 기준으로 내부 조인(inner join)합니다. 이 과정에서 교집합을 찾습니다.
  3. 결과 출력: 교집합 결과를 출력합니다.
  4. CSV로 저장 (선택 사항): 생성된 교집합 DataFrame을 새로운 CSV 파일로 저장할 수 있습니다.

이 코드를 사용하여 olist_order_payments_dataset.csv와 olist_orders_dataset.csv의 교집합 데이터를 쉽게 정리할 수 있습니다. 파일 경로는 실제 파일의 위치에 맞게 수정해야 합니다.