我们需要分析海地地震求助的数据(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))

海地地震危机数据分析 + 标记中山、成都、重庆、昆山所在相关推荐

  1. python数据分析二一:图形化显示海地地震危机数据

    知识点回顾 zip() >>>a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>&g ...

  2. 找工作交流群(北上广深杭成都重庆南京武汉长沙西安)

    群定义 源码圈找工作交流群,不同于原有的源码圈技术群,主要如下几点不同: 按照地区拆分.精力有限,暂时只有北上广深杭,拉人进群很累的!!! 探讨面试相关的问题.你懂的,面试的问题和实战存在一定的差异. ...

  3. 2015-03-29-绘图和可视化(3)-绘制地图:图形化显示海地地震危机数据

    --------------------------------------------------------------------------------------- -----(三)绘制地图 ...

  4. 数据分析练习Ⅱ----图形化显示海地地震危机数据

    Ushahidi是一家非盈利软件公司,人们可以通过短信向其提供有关自然灾害和地缘政治事件的信息.这些数据会被发布在他们的网站上以提供分析和图形化.本节,利用2010年海底地震及其余震期间搜集的数据. ...

  5. 400 bad request什么意思_成都什么样的酒店最流行?——Python数据分析实战之成都酒店分布数据...

    前言 一个物理学院核工程与核技术专业的学生,对Python爬虫和数据分析技术的痴迷,完成一项全样本数据爬取.清洗和分析的整个数据分析过程,本项目重点体现:在海量数据的获取和清洗,而Python正是你手 ...

  6. 7月1日起南京至成都重庆开行动车 三大亮点受关注

    龙虎网讯 记者从上海铁路局获悉,自7月1日零时起,该局实施新的列车运行图.新图将增开旅客列车14对,开行上海.杭州.南京至成都.重庆的动车组列车4对,调整多趟列车运行径路和运行区段. 亮点一:极大缩短 ...

  7. CDA内推 |滴滴/麦可思+数据分析岗+昆明/成都/北京

    ●岗位详情● 数据分析 招聘人数:2人 薪资:7-9K 岗位要求 1.熟练操作excel,sql 2.本科以上(相关数据分析经验者优先) 3.责任心强,善于沟通 工作地点:昆明市 俊发中心16楼滴滴出 ...

  8. 昆明,成都,重庆(2007-06-12 13:26:39)

    好久没写日记了!提起笔来有点生疏,刚看了别人的日记,有点感触,就手痒了!      毕业快两年了!有点回忆学校的生活!重庆是一个我比较认同的城市!虽然我在昆明呆过,也在成都呆过一段时间,可我还是比较喜 ...

  9. 基于python的房价分析国内外_python数据分析练习--分析成都的房价

    目的:使用python的numpy.pandas.matplotlib库来分析成都二手房的房价信息. 原始数据来源:贝壳找房网站上的数据https://cd.ke.com/ershoufang 环境: ...

最新文章

  1. WSE 3.0 文档翻译:安装WSE3.0
  2. Objective-C市场占有率排名升至第4位
  3. android 内部存储 清空,Android清空应用内部文件缓存
  4. jQuery循环使用相同类的元素
  5. java用重载实现获取元素的数据类型
  6. python 有效的字母异位词
  7. linux集群架构(一),集群概述、高可用配置
  8. [NewLife.XCode]反向工程(自动建表建库大杀器)
  9. 【ArcGIS风暴】最牛逼空间数据批处理神器来了:用户自定义工具箱GeoStorm.tbx
  10. html的设置语言为en,CSS中的html [lang =“ en”]和html:lang(en)有什么区别?
  11. Linux系统时间和java的时间不一致
  12. IntelliJ IDEA如何修改背景颜色样式
  13. 通过BeanPostProcessor理解Spring中Bean的生命周期及AOP原理 1
  14. [译] Redux vs. React 的 Context API
  15. JDK15安装与环境变量配置
  16. maxpooling反向传播
  17. arduinouno的地是相连的吗_德阳马自达3方向机,宝马X7电子方向机进水可以修吗
  18. ARM开发——常见仿真器
  19. GDK7+NanoCode调试学习系列1--环境搭建
  20. 变量、函数、类等编程时常用英文命名和缩写

热门文章

  1. AETA地震预测AI算法大赛
  2. CENTOS 架设FTP
  3. 米思齐(Mixly)图形化系列教程(七)-while与do……while
  4. iOS邮箱模糊匹配功能集成
  5. 板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
  6. 深圳市京华达物流有限公司荣获“跨境电商物流服务明星企业”
  7. 片仔癀1粒590之后,做AI制药的“英矽智能”融资近17亿
  8. php sequelize,Sequelize中用group by进行分组聚合查询
  9. 信安学习笔记之网络安全:Day-3【路由器配置、三层交换机与路由器综合】
  10. 2023最新Python阅读书籍推荐