海地地震危机数据分析 + 标记中山、成都、重庆、昆山所在
我们需要分析海地地震求助的数据(GitHub),并画出求助分布点。
1.检查并清洗数据。
2.画出dummy_frame,为点分布做准备。
3.在地图上显示求助信息。
1.检查并清洗数据。
import pandas as pd
import numpy as np
%matplotlib inline
%matplotlib notebook
import matplotlib.pyplot as plt
from pandas import DataFrame
data = pd.read_csv('data\haiti\Haiti.csv')
data.info()
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 3593 entries, 0 to 3592
#Data columns (total 10 columns):
# # Column Non-Null Count Dtype
#--- ------ -------------- -----
# 0 Serial 3593 non-null int64
# 1 INCIDENT TITLE 3593 non-null object
# 2 INCIDENT DATE 3593 non-null object
# 3 LOCATION 3592 non-null object
# 4 DESCRIPTION 3593 non-null object
# 5 CATEGORY 3587 non-null object
# 6 LATITUDE 3593 non-null float64
# 7 LONGITUDE 3593 non-null float64
# 8 APPROVED 3593 non-null object
# 9 VERIFIED 3593 non-null object
#dtypes: float64(2), int64(1), object(7)
#memory usage: 182.5+ KB
# 检查数据
# 检查1
data[['INCIDENT DATE','LATITUDE','LONGITUDE']][:10]
# INCIDENT DATE LATITUDE LONGITUDE
#0 05/07/2010 17:26 18.233333 -72.533333
#1 28/06/2010 23:06 50.226029 5.729886
#2 24/06/2010 16:21 22.278381 114.174287
#3 20/06/2010 21:59 44.407062 8.933989
#4 18/05/2010 16:26 18.571084 -72.334671
#5 26/04/2010 13:14 18.593707 -72.310079
#6 26/04/2010 14:19 18.482800 -73.638800
#7 26/04/2010 14:27 18.415000 -73.195000
#8 15/03/2010 10:58 18.517443 -72.236841
#9 15/03/2010 11:00 18.547790 -72.410010# 检查2
data['CATEGORY'][:6]
#Out[4]:
#0 1. Urgences | Emergency, 3. Public Health,
#1 1. Urgences | Emergency, 2. Urgences logistiqu...
#2 2. Urgences logistiques | Vital Lines, 8. Autr...
#3 1. Urgences | Emergency,
#4 1. Urgences | Emergency,
#5 5e. Communication lines down,
#Name: CATEGORY, dtype: object# 检查3
data.describe()
# Serial LATITUDE LONGITUDE
#count 3593.000000 3593.000000 3593.000000
#mean 2080.277484 18.611495 -72.322680
#std 1171.100360 0.738572 3.650776
#min 4.000000 18.041313 -74.452757
#25% 1074.000000 18.524070 -72.417500
#50% 2163.000000 18.539269 -72.335000
#75% 3088.000000 18.561820 -72.293570
#max 4052.000000 50.226029 114.174287# 移除错误位置信息、移除缺失分类信息
data = data[(data.LATITUDE > 18)&(data.LATITUDE < 20)&(data.LONGITUDE > -75)&(data.LONGITUDE <-70)&(data.CATEGORY.notnull())]
data.describe()
# Serial LATITUDE LONGITUDE
#count 3569.000000 3569.000000 3569.000000
#mean 2081.498459 18.592503 -72.424994
#std 1170.311824 0.273695 0.291018
#min 4.000000 18.041313 -74.452757
#25% 1074.000000 18.524200 -72.417498
#50% 2166.000000 18.539269 -72.335000
#75% 3089.000000 18.561800 -72.293939
#max 4052.000000 19.940630 -71.099489
2.画出dummy_frame,为点分布做准备。
# 将“用,分割的字符串”转化为list
def to_cat_list(catstr):stripped = (x.strip() for x in catstr.split(','))return [x for x in stripped if x]# 将series转化为集合
def get_all_categories(cat_series):cat_sets = (set(to_cat_list(x)) for x in cat_series)return sorted(set.union(*cat_sets))# 删掉“用|分割字符串”的部分内容
def get_english(cat):code , names = cat.split('.')if '|' in names:names = names.split('|')[1]return code,names.strip()
# 提取分类
all_cats = get_all_categories(data.CATEGORY)
english_mapping = dict(get_english(x) for x in all_cats)
# 建立dummy_table表格# 获取编码 这里用在set和list
def get_code(seq):return [x.split('.')[0] for x in seq if x ]all_codes = get_code(all_cats)
code_index = pd.Index(np.unique(all_codes))
dummy_frame = pd.DataFrame(np.zeros((len(data),len(code_index))),index= data.index , columns = code_index,)print(dummy_frame.iloc[:,:])
# 1 1a 1b 1c 1d 2 2a 2b 2c 2d ... 7c 7d 7g \
#0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0
#4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0
#5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0
#6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0
#7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0
# 画1:进行第二次取code
for row , cat in zip(data.index,data.CATEGORY):codes = get_code(to_cat_list(cat))dummy_frame.loc[row,codes] = 1data = data.join(dummy_frame.add_prefix('category_'))
data2.iloc[:,:]
3.在地图上显示求助信息。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as pltdef basic_haiti_map(ax = None,lllat = 17.25,urlat = 20.25,lllon = -75 ,urlon = -71):m = Basemap(ax=ax,projection='stere',lon_0 = (urlon+lllon)/2,lat_0 =(urlat + lllat) /2,llcrnrlat = lllat,urcrnrlat = urlat,llcrnrlon =lllon,urcrnrlon = urlon,resolution='f')m.drawcoastlines()m.drawstates()m.drawcountries()return m
fig,axes = plt.subplots(nrows =2,ncols=2,figsize =(12,10))
fig.subplots_adjust(hspace=0.05,wspace=0.05)to_plot = ['2a','1','3c','7a']lllat =17.25;urlat=20.25;lllon=-75;urlon=-71for code,ax in zip(to_plot ,axes.flat):m = basic_haiti_map(ax,lllat=lllat,urlat=urlat,lllon=lllon,urlon=urlon)cat_data = data[data['category_%s' %code] == 1]x,y = m(cat_data.LONGITUDE.values,cat_data.LATITUDE.values)m.plot(x,y,'k.',alpha = 0.5)ax.set_title('%s:%s' % (code,english_mapping[code]))
PS:画出中国地图,标记中山、成都、重庆、昆山所在
fig,axes = plt.subplots(nrows =1,ncols=1,figsize =(12,10))
fig.subplots_adjust(hspace=0.05,wspace=0.05)
lllat = 2 # left corner latitude
lllon = 72 # left corner longitude
urlat = 55 # right corner latitude
urlon = 135 # right corner longitude
code=['China : ZS,CD,CQ,KS']
LON=[113.38,104.07,106.33,120.98]
LAT=[22.52,30.67,29.35,31.38]m = basic_haiti_map(ax=axes,lllat=lllat,urlat=urlat,lllon=lllon,urlon=urlon)
for i in range(len(LON)):x,y = m(LON[i],LAT[i])m.scatter(x, y, s=100, marker='o',color='#FF5600')
axes.set_title('%s:'%(code))
海地地震危机数据分析 + 标记中山、成都、重庆、昆山所在相关推荐
- python数据分析二一:图形化显示海地地震危机数据
知识点回顾 zip() >>>a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>&g ...
- 找工作交流群(北上广深杭成都重庆南京武汉长沙西安)
群定义 源码圈找工作交流群,不同于原有的源码圈技术群,主要如下几点不同: 按照地区拆分.精力有限,暂时只有北上广深杭,拉人进群很累的!!! 探讨面试相关的问题.你懂的,面试的问题和实战存在一定的差异. ...
- 2015-03-29-绘图和可视化(3)-绘制地图:图形化显示海地地震危机数据
--------------------------------------------------------------------------------------- -----(三)绘制地图 ...
- 数据分析练习Ⅱ----图形化显示海地地震危机数据
Ushahidi是一家非盈利软件公司,人们可以通过短信向其提供有关自然灾害和地缘政治事件的信息.这些数据会被发布在他们的网站上以提供分析和图形化.本节,利用2010年海底地震及其余震期间搜集的数据. ...
- 400 bad request什么意思_成都什么样的酒店最流行?——Python数据分析实战之成都酒店分布数据...
前言 一个物理学院核工程与核技术专业的学生,对Python爬虫和数据分析技术的痴迷,完成一项全样本数据爬取.清洗和分析的整个数据分析过程,本项目重点体现:在海量数据的获取和清洗,而Python正是你手 ...
- 7月1日起南京至成都重庆开行动车 三大亮点受关注
龙虎网讯 记者从上海铁路局获悉,自7月1日零时起,该局实施新的列车运行图.新图将增开旅客列车14对,开行上海.杭州.南京至成都.重庆的动车组列车4对,调整多趟列车运行径路和运行区段. 亮点一:极大缩短 ...
- CDA内推 |滴滴/麦可思+数据分析岗+昆明/成都/北京
●岗位详情● 数据分析 招聘人数:2人 薪资:7-9K 岗位要求 1.熟练操作excel,sql 2.本科以上(相关数据分析经验者优先) 3.责任心强,善于沟通 工作地点:昆明市 俊发中心16楼滴滴出 ...
- 昆明,成都,重庆(2007-06-12 13:26:39)
好久没写日记了!提起笔来有点生疏,刚看了别人的日记,有点感触,就手痒了! 毕业快两年了!有点回忆学校的生活!重庆是一个我比较认同的城市!虽然我在昆明呆过,也在成都呆过一段时间,可我还是比较喜 ...
- 基于python的房价分析国内外_python数据分析练习--分析成都的房价
目的:使用python的numpy.pandas.matplotlib库来分析成都二手房的房价信息. 原始数据来源:贝壳找房网站上的数据https://cd.ke.com/ershoufang 环境: ...
最新文章
- WSE 3.0 文档翻译:安装WSE3.0
- Objective-C市场占有率排名升至第4位
- android 内部存储 清空,Android清空应用内部文件缓存
- jQuery循环使用相同类的元素
- java用重载实现获取元素的数据类型
- python 有效的字母异位词
- linux集群架构(一),集群概述、高可用配置
- [NewLife.XCode]反向工程(自动建表建库大杀器)
- 【ArcGIS风暴】最牛逼空间数据批处理神器来了:用户自定义工具箱GeoStorm.tbx
- html的设置语言为en,CSS中的html [lang =“ en”]和html:lang(en)有什么区别?
- Linux系统时间和java的时间不一致
- IntelliJ IDEA如何修改背景颜色样式
- 通过BeanPostProcessor理解Spring中Bean的生命周期及AOP原理 1
- [译] Redux vs. React 的 Context API
- JDK15安装与环境变量配置
- maxpooling反向传播
- arduinouno的地是相连的吗_德阳马自达3方向机,宝马X7电子方向机进水可以修吗
- ARM开发——常见仿真器
- GDK7+NanoCode调试学习系列1--环境搭建
- 变量、函数、类等编程时常用英文命名和缩写
热门文章
- AETA地震预测AI算法大赛
- CENTOS 架设FTP
- 米思齐(Mixly)图形化系列教程(七)-while与do……while
- iOS邮箱模糊匹配功能集成
- 板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
- 深圳市京华达物流有限公司荣获“跨境电商物流服务明星企业”
- 片仔癀1粒590之后,做AI制药的“英矽智能”融资近17亿
- php sequelize,Sequelize中用group by进行分组聚合查询
- 信安学习笔记之网络安全:Day-3【路由器配置、三层交换机与路由器综合】
- 2023最新Python阅读书籍推荐