购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 Python分析某地降雨量变化规律

2.5节对数据属性间的处理做了一个大致的介绍,本节将使用这些方法来解决一个实际问题。

随着中原经济区的发展和城镇化水平的提高,城市用水日趋紧张,为合理调度和利用水资源,需要找到降水量的变化及分布规律。现有一个河南省的降水量数据集,名为rain.csv,记录了从2000年到2011年之间的每月降水量数据,本节将对其降水量进行统计计算,找出降水量变化规律并进行分析。

2.5.1 不同年份的相同月份统计

一般情况下,降雨量会随着春夏秋冬的交替呈现一个不同的状态,横向是一个过程。对于不同的年份来说,每月的降雨量应该在一个范围内浮动,而不应偏离均值太大。不同年份的相同月份统计见程序2-13。

【程序2-13】
    from pylab import *
    import pandas as pd
    import matplotlib.pyplot as plot
    filePath = ("c://rain.csv")
    dataFile = pd.read_csv(filePath)
      
    summary = dataFile.describe()
    print(summary)
      
    array = dataFile.iloc[:,1:13].values
    boxplot(array)
    plot.xlabel("month")
    plot.ylabel(("rain"))
    show()

打印结果如下:

                    0           1           2           3           4
    count    12.000000   12.000000   12.000000   12.000000   12.000000
    mean   2005.500000  121.083333   67.833333  102.916667  263.416667
    std       3.605551  103.021144   72.148626  137.993714  246.690258
    min    2000.000000    0.000000    0.000000    0.000000   70.000000
    25%    2002.750000   17.750000    9.750000    3.000000  136.250000
    50%    2005.500000  125.000000   39.500000   51.500000  155.000000
    75%    2008.250000  204.500000  123.250000  150.000000  232.500000
    max    2011.000000  295.000000  192.000000  437.000000  833.000000
      
                    5            6            7            8            9
    count    12.000000    12.000000    12.000000    12.000000    12.000000
    mean   1134.583333  2365.666667  2529.000000  1875.500000  1992.416667
    std     618.225240   705.323180  1120.231226   603.135821   670.834414
    min     218.000000   766.000000   865.000000   746.000000   621.000000
    25%     685.500000  2117.000000  1770.250000  1723.500000  1630.000000
    50%     951.500000  2440.500000  2023.500000  1943.500000  1961.000000
    75%    1599.000000  2723.750000  3603.000000  2321.750000  2231.750000
    max    2134.000000  3375.000000  4163.000000  2508.000000  3097.000000
      
                   10          11          12
    count    12.000000   12.000000   12.000000
    mean   1219.250000  159.333333   38.333333
    std     743.534938  124.611639   34.494620
    min     328.000000    0.000000    0.000000
    25%     612.250000   64.000000   18.750000
    50%    1208.500000  123.000000   25.500000
    75%    1672.250000  278.250000   46.250000
    max    2561.000000  357.000000  100.000000

从打印结果可以看到,程序对每个月份的降雨量进行了计算,获得了其偏移值、均值以及均方差的大小。

通过四分位数的计算,可以获得一个波动范围,具体结果如图2.15所示。

从图2.15中可以直观地看到,不同月份之间,降雨量有很大的差距,1~4月降雨量较少,5月份开始降雨量明显增多,而在7月份达到顶峰后开始回落,12月又达到了一个最低的降雨量。

同时可以看到,有几个月份的降雨量有明显的偏移,即出现离群值,这一点可能跟年度情况有关,需要继续进行分析。

图2.15

2.5.2 不同月份之间的增减程度比较

正常情况下,每年降雨量都呈现一个平稳的增长或者减少的过程,其下降的坡度即趋势线应该是一样的。程序2-14展示了这种趋势。

【程序2-14】
    from pylab import *
    import pandas as pd
    import matplotlib.pyplot as plot
    filePath = ("c://rain.csv")
    dataFile = pd.read_csv(filePath)
      
    summary = dataFile.describe()
    minRings = -1
    maxRings = 99
    nrows = 11
    for i in range(nrows):
        dataRow = dataFile.iloc[i,1:13]
        labelColor = (dataFile.iloc[i,12] - minRings) / (maxRings - minRings)
        dataRow.plot(color=plot.cm.RdYlBu(labelColor), alpha=0.5)
    plot.xlabel("Attribute")
    plot.ylabel(("Score"))
    show()

最终打印结果如图2.16所示。

从图2.16中可以明显地看到,降雨的月份并不是一个规律的上涨或下跌状态,而是呈现一个不规则的浮动状态,增加最快的为6~7月,下降最快的为7~8月,之后有一个明显的回升过程。

图2.16

2.5.3 每月降雨是否相关

理论上来说每月的降雨量应该是相互独立的,即每月的降雨量和其他月份没有关系。但是实际是这样的吗?每月降雨量之间的相关性见程序2-15。

【程序2-15】
    from pylab import *
    import pandas as pd
    import matplotlib.pyplot as plot
    filePath = ("c:// rain.csv")
    dataFile = pd.read_csv(filePath)
    summary = dataFile.describe()
    corMat = DataFrame(dataFile.iloc[1:20,1:20].corr())
    plot.pcolor(corMat)
    plot.show()

通过计算,最终结果如图2.17所示。

图2.17

从图2.17中可以看到,颜色分布(图片请参看下载资源中的相关文件)比较平均,表示相关性不强,因此可以认为每月的降雨是独立行为,每个月的降雨量和其他月份没有关系。 9piy9uRcoZsUmJU73kxNlU6aBOiYgtbDFz2YqMqLV/Ke+XIG8SC+WajUOUHNR2Ud

点击中间区域
呼出菜单
上一章
目录
下一章
×