import matplotlib.dates as mdates

from dateutil import parser

# 把日期数据转换成 datetime 的格式

# 把日期从 string 类型转化为标准的 datetime 类型

day_milano = [parser.parse(x) for x in x1] #x是string

# 设定时间的格式

hours = mdates.DateFormatter('%H:%M')

# 设定X轴显示的格式

ax.xaxis.set_major_formatter(hours)

一个画图过程:

# 读取米兰的城市气象数据

df_milano = pd.read_csv('milano_270615.csv')

# 取出我们要分析的温度和日期数据

y1 = df_milano['temp']

x1 = df_milano['day']

# 把日期数据转换成 datetime 的格式

day_milano = [parser.parse(x) for x in x1]

# 调用 subplot 函数, fig 是图像对象,ax 是坐标轴对象

fig, ax = plt.subplots()

# 调整x轴坐标刻度,使其旋转70度,方便查看

plt.xticks(rotation=70)

# 设定时间的格式

hours = mdates.DateFormatter('%H:%M')

# 设定X轴显示的格式

ax.xaxis.set_major_formatter(hours)

# 画出图像,day_milano是X轴数据,y1是Y轴数据,‘r’代表的是'red' 红色

ax.plot(day_milano ,y1, 'r')

# 显示图像

fig

from sklearn.svm import SVR

# 我们调用SVR函数,在参数中规定了使用线性的拟合函数

# 并且把 C 设为1000来尽量拟合数据(因为不需要精确预测不用担心过拟合)

svr_lin1 = SVR(kernel='linear', C=1e3)

svr_lin2 = SVR(kernel='linear', C=1e3)

# 加入数据,进行拟合(这一步可能会跑很久,大概10多分钟,休息一下:) )

svr_lin1.fit(dist1, temp_max1)

svr_lin2.fit(dist2, temp_max2)

xp1 = np.arange(10,100,10).reshape((9,1))

xp2 = np.arange(50,400,50).reshape((7,1))

yp1 = svr_lin1.predict(xp1)

yp2 = svr_lin2.predict(xp2)

# 限制了 x 轴的取值范围

ax.set_xlim(0,400)

# 画出图像

ax.plot(xp1, yp1, c='b', label='Strong sea effect')

ax.plot(xp2, yp2, c='g', label='Light sea effect')

fig

print svr_lin1.coef_ #斜率

print svr_lin1.intercept_ # 截距

print svr_lin2.coef_

print svr_lin2.intercept_

这里 np.arange(10,100,10) 会返回 [10, 20, 30,..., 90],如果把列表看成是一个矩阵,那么这个矩阵是 1x9 的。这里 reshape((9,1)) 函数就会把该列表变为 9x1 的, [[10], [20], ..., [90]]。这么做的原因是因为 predict() 函数的只能接受一个 Nx1 的列表,返回一个 1xN 的列表。

再学习一下numpy和pandas的数据结构。

from scipy.optimize import fsolve #求解方程

# 定义了第一条拟合直线

def line1(x):

a1 = svr_lin1.coef_[0][0]

b1 = svr_lin1.intercept_[0]

return a1*x + b1

# 定义了第二条拟合直线

def line2(x):

a2 = svr_lin2.coef_[0][0]

b2 = svr_lin2.intercept_[0]

return a2*x + b2

# 定义了找到两条直线的交点的 x 坐标的函数

def findIntersection(fun1,fun2,x0):

return fsolve(lambda x : fun1(x) - fun2(x),x0)

result = findIntersection(line1,line2,0.0)

print "[x,y] = [ %d , %d ]" % (result,line1(result))

# x = [0,10,20, ..., 300]

x = np.linspace(0,300,31)

plt.plot(x,line1(x),x,line2(x),result,line1(result),'ro')

风向频率玫瑰图

def showRoseWind(values,city_name,max_value):

N = 8

# theta = [pi*1/4, pi*2/4, pi*3/4, ..., pi*2]

theta = np.arange(0.,2 * np.pi, 2 * np.pi / N)

radii = np.array(values)

# 绘制极区图的坐标系

plt.axes([0.025, 0.025, 0.95, 0.95], polar=True)

# 列表中包含的是每一个扇区的 rgb 值,x越大,对应的color越接近蓝色

colors = [(1-x/max_value, 1-x/max_value, 0.75) for x in radii]

# 画出每个扇区

plt.bar(theta, radii, width=(2*np.pi/N), bottom=0.0, color=colors)

# 设置极区图的标题

plt.title(city_name, x=0.2, fontsize=20)

#调用

hist, bin = np.histogram(df_ferrara['wind_deg'],8,[0,360])

print hist

showRoseWind(hist,'Ferrara', max(hist))

计算风速均值的分布情况

def RoseWind_Speed(df_city):

# degs = [45, 90, ..., 360]

degs = np.arange(45,361,45)

tmp = []

for deg in degs:

# 获取 wind_deg 在指定范围的风速平均值数据

tmp.append(df_city[(df_city['wind_deg']>(deg-46)) & (df_city['wind_deg']

['wind_speed'].mean())

return np.array(tmp)

#调用

showRoseWind(RoseWind_Speed(df_ravenna),'Ravenna',max(hist))

python实现气象数据分析实验报告_Python 气象数据分析相关推荐

  1. python数据分析实验报告_Python 数据分析入门实战

    本训练营中,我们将学习怎么样使用 Python 进行数据分析.课程将从数据分析基础开始,一步步深入讲解.从 Python 的基础用法到数据分析的各种算法,并结合各种实例,讲解数据分析过程中的方方面面. ...

  2. python数据分析实验报告_Python数据分析综合小练习:销售数据分析

    有这样一个小小的练习题: 卖电子商品的老板,每天记录了自己卖出的U盘,电脑支架,插座,电池,音箱,鼠标,usb数据线,手机充电线等数量,客户的需求是一方面,也可以通过客户购买关联性比较强的商品进行引导 ...

  3. python股票数据分析实验报告_Python实验报告

    一. 实验原理 ( 要求.任务等 ) (一).Python的开发环境 Python诞生于20世纪90年代初,是一种解释型.面向对象.动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一. 编写 ...

  4. python字典的应用实验报告_Python字典应用的一个例子

    #!/usr/bin/env python #定义一个空字典 db = {} def newuser(): prompt = '--login desired: ' while True: name ...

  5. python词频统计西游记实验报告_Python文本统计功能之西游记用字统计操作示例

    本文实例讲述了Python文本统计功能之西游记用字统计操作.分享给大家供大家参考,具体如下: 一.数据 xyj.txt,<西游记>的文本,2.2MB 致敬吴承恩大师,4020行(段) 二. ...

  6. python猜数游戏实验报告_python实现猜数游戏

    本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 一.问题描述: 使用python开发一个猜数小游戏,程序随机产生0~1024之间的数字,用户输入猜测数字,程序告诉用户 ...

  7. python简单计算器综合实验报告_Python实现的简单计算器功能详解

    本文实例讲述了Python实现的简单计算器功能.分享给大家供大家参考,具体如下: 使用python编写一款简易的计算器 计算器效果图 首先搭建计算器的面板: 计算器面板结构 建造一个继承于wx.Fra ...

  8. python学生成绩管理系统实验报告_Python实现学生成绩管理系统

    本文实例为大家分享了Python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本功能: 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立的student ...

  9. 【Python与数据分析实验报告】Pandas数据分析基础应用

    目录 任务内容 (1)将数据进行转置,转置后型如eg.csv, 缺失值用NAN代替. (2) 对数据中的异常值进行识别并用NA代替. (3) 计算每个用户用电数据的基本统计量,包括:最大值.最小值.均 ...

  10. python简单计算器综合实验报告_python之简单计算器

    importre#问题:让用户选择1,2不现实,如何让用户自动加减乘除#思考:现在已经能够处理,单个的加减或乘除#可否在混合中先分组出(乘除) eg: ['8+9+','9*4/3','-','4*2 ...

最新文章

  1. RHCE认证培训+考试七天实录(二)
  2. linkedblockingqueue使用_阿里规范要求不能使用Executors创建线程
  3. TOP级CG行业云渲染服务的演进之路
  4. content of maven-uilib-pom - the eslint and jslint are configured here
  5. AIsing Programming Contest 2020 总结
  6. 优秀程序员都有哪些编程习惯?
  7. 网站加速--Cache为王篇
  8. ASP.NET 2.0中合并 GridView 的表头单元格
  9. C# richTextBox重刷最后一行,richTextBox只更新最后一行
  10. Foobar2000 封面显示个性
  11. javascript获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
  12. python 列表、元组、字典、集合
  13. java 设计连连看_软件设计之基于Java的连连看小游戏(一)——开题及游戏首页的制作...
  14. vue 如何生成一个dom元素_vue:虚拟dom的实现
  15. 【Mac使用技巧】Mac的VMware虚拟机系统时间如何调成不同步
  16. 计算机课件制作ppt,计算机应用基础_幻灯片制作ppt课件
  17. Python3网络爬虫
  18. 如何从Adobe Illustrator文件中提取PNG
  19. 日本测试人工智能破案,“机械战警”渐行渐近
  20. Android 快捷方式 shortcuts 使用

热门文章

  1. matlab如何电路分析方法,MATLAB在电路分析中的应用_李继林
  2. vb学生管理系统服务器编程,利用VB进行服务器编程实例汇总.doc
  3. “双一流”大学生们最爱看的计算机类书籍是它们
  4. 量子计算机需要的基础,量子计算入门
  5. 基于php的购物网站源代码,[内附完整源码和文档] 基于PHP的网上购物系统设计与实现...
  6. 计算机附件中的超级终端,windows10系统中附件中没有超级终端怎么解决
  7. TLS回调函数以及反调试简单使用
  8. 你要的《高性能MySQL》.pdf
  9. 贪心算法数塔问题c语言,c语言背包问题_c语言背包问题几种解法_背包问题贪心算法(2)...
  10. clover更新驱动 后不能开机_黑苹果安装教程 2020 台式机版(长期更新)