H26_商業統計より,shpファイルとcsvを連携させます.
H26_商業統計のフォーマット
!(/image/syogyo_format.png)
商業統計の加工
データの読み込み
カラムは適当に振ります.
python
import pandas as pd
# 仮カラム名
columns =
for i in range(1, 97):
columns.append(f"c{i}")
# csvの読み込み
df = pd.read_csv('./data/shp_csv/H26_03_500m市区町村.csv', names=columns)
仙台市の抽出
仙台市の抽出 + メッシュコードの整形 + 小売売上の整数化を実行します.
python
# 宮城県:4
dfh = df[df['c4']==4]
# 仙台市:04101〜04105
df_city = dfh[(dfh['c11']<=105)|(dfh['c13']<=105)|(dfh['c15']<=105)|(dfh['c17']<=105)]
# KEY_CODE(メッシュ)c5~c8
df_city['KEY_CODE'] = df_city['c5'].astype(str) + \
df_city['c6'].astype(str).str.zfill(2) + \
df_city['c7'].astype(str).str.zfill(2) + \
df_city['c8'].astype(str)
# 0埋め
df_city = df_city.replace(['X', '-'], '0')
# データ型変更
df_city['c24'] = df_city['c24'].astype(int) #小売売上
!(/image/syogyo_format.png)
境界データ
境界データは1次メッシュ:5740をダウンロードし,shpファイルに情報を結合させます.
python
# -*- coding: utf-8 -*-
import pandas as pd
import geopandas
from shapely.ops import cascaded_union
from shapely.geometry import Point, Polygon
# shpファイルの読み込み
input_geodf = geopandas.read_file("./data/shp_csv/HDDSWH5740/MESH05740.shp")
# 1次メッシュ:5740
df_city_5740 = df_city[df_city['c5']==5740]
# 地形データ
geometry =
mids = df_city_5740['KEY_CODE'].tolist()
for mid in mids:
mdf = input_geodf[input_geodf['KEY_CODE']==mid].reset_index(drop=True)
geometry.append(mdf['geometry'][0])
# GeoDataFrameを作成
geo_df = geopandas.GeoDataFrame(df_city_5740, geometry=geometry)
# Shapeファイルの出力
geo_df.to_file(driver='ESRI Shapefile', filename="./data/shp_csv/syogyo_sendai_mesh.shp")
QGISに投影
仙台駅周辺のみ年間8000(千万円)以上でした.(赤色着色)
!(/image/syogyo_gis.png)
まとめ
H26_商業統計より,shpファイルとcsvを連携させました.