Mathematica数据处理(4)

来源:互联网 发布:比特币交易 知乎 编辑:程序博客网 时间:2024/06/01 15:22
今天的第二篇,当时觉得一天写一篇不是很多,现在觉得还是挺多的,都来不及看电影了.........

好吧,那这一篇就来看一个例子,把数据处理的流程我们走一遍

第一步:数据获取
我数据的获取就直接用了Mathematica自带的,只是做个演示(●'◡'●)
data = Table[{   CountryData[country, "Name"],   CountryData[country, "LifeExpectancy"]   }, {country, CountryData[][[All, 2]]}  ]
这里获取了每个国家的人均寿命
{"Australia", Quantity[82.496, "Years"]}
得到类似这样的数据

第二步:转换格式
我们首先查看获得的数据的格式
Head /@ data[[1]]
得到
{String, Quantity}
为了方便起见,我们要把第二个数据,也就是年龄的数据转换成real
QuantityMagnitude[data[[All, 2]]]
这样就把格式转换好了,转换格式是为了让我们更好的处理

第三步:过滤
MatchQ[data, {{_String, _Real} ..}]
得到的结果是
False,说明有些数据缺失了

于是我们查看是哪些数据缺失了
Cases[data, Except[{_String, _Real}]]
得到
{"Christmas Island", Missing["NotAvailable"]}
可见是一些小的国家的数据没有统计进去

这里我们的做法就是把这些数据全部去掉
filterdata = Cases[data, {_String, _Real}]

第四步:挖掘
这里我们只算出这组数据中的最大值和最小值。
range = #[filterdata[[All, 2]]] & /@ {Min, Max}
得到
{45.561, 84.36}
第五步:表示
这一步我们要做的就是将数据用图形的形式展示出来,这是一个十分关键的环节
我们先表示一下缺失的国家,后面画图的时候会用上
invaildata = Complement[data, filterdata];
然后开始画图
pics = Graphics[{EdgeForm[Gray],   Table[    {FaceForm[ColorData[{"TemperatureMap", range}][c[[2]]]],     CountryData[c[[1]], "Polygon"]}, {c, filterdata}],   Table[{FaceForm[Black], CountryData[ic[[1]], "Polygon"]},    {ic, invaildata}]   }  , ImageSize -> Large]
上面的代码解释:将有数据的国家根据大小寿命不同标上不同的颜色,没有数据的国家用黑色表示

得到下面的图像




第六步:修饰
上面的图像没有图例,没有标题,这些我们都要在修饰里面加上
Column[{Style["全球人口寿命分布图", "Subsubsection"],  pics,  BarLegend[{"TemperatureMap", range}, LegendLayout -> "Row",    LegendMarkerSize -> 500, LabelStyle -> {FontSize -> 20}]  }, Center]
于是得到了下面的图



第七步:交互
关于交互,比如我们可以做出点击一个国家,可以显示更多的信息,这些我们都先放着,把前面的都掌握好了。


总结:
数据获得
格式转换:Head,QuantityMagnitude
过滤:Case
挖掘
表示
修饰:Column
交互





以上,所有
2016/8/10


1 0
原创粉丝点击