Scipy入门

简介: 标题中的英文首字母大写比较规范,但在python实际使用中均为小写。建议读者安装anaconda,这个集成开发环境自带了很多包。作者推荐到2018年8月2日仍为最新版本的anaconda下载链接: https://pan.baidu.com/s/1pbzVbr1ZJ-iQqJzy1wKs0A 密码: g6ex下面代码的开发环境为jupyter notebook,使用在jupyter notebook中的截图表示运行结果。

标题中的英文首字母大写比较规范,但在python实际使用中均为小写。
建议读者安装anaconda,这个集成开发环境自带了很多包。
作者推荐到2018年8月2日仍为最新版本的anaconda下载链接: https://pan.baidu.com/s/1pbzVbr1ZJ-iQqJzy1wKs0A 密码: g6ex
下面代码的开发环境为jupyter notebook,使用在jupyter notebook中的截图表示运行结果。

1.简介

Scipy是世界上著名的Python开源科学计算库,建立在Numpy上,它增加的功能包括数值积分、最优化、统计和一些专用函数。
Scipy函数库在Numpy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。
官网:https://www.scipy.org/
Scipy模块列表:

模块名 功能
scipy.cluster 向量量化
scipy.constants 数学常量
scipy.ffpack 快速傅里叶变换
scipy.integrate 积分
scipy.interpolate 插值
scipy.io 数据输入输出
scipy.linalg 线性代数
scipy.ndimage N维图像
scipy.odr 正交距离回归
scipy.optimize 优化算法
scipy.signal 信号处理
scipy.sparse 稀疏矩阵
scipy.spatial 空间数据结构和算法
scipy.special 特殊数学函数
scipy/stats 统计函数

2.jupyter简介

Jupyter notebook 有两种键盘输入模式。编辑模式,允许你往单元格中键入代码或者文本,这时的单元框线是绿色的。命令模式,键盘输入运行程序命令,这时的单元框是蓝色的。

命令 作用
shift + Enter 运行本单元格,然后选中下个单元格
ctrl + Enter 运行本单元格
Alt + Enter 运行本单元格,在其下插入新单元格
Y 单元格转入Code状态
M 单元格转入Markdown状态
A 在上方插入新单元
B 在下方插入新单元
X 剪切选中的单元格
Shift + V 在上方粘贴单元

3.保存和读取文件

from scipy import io
import numpy as np
a = np.arange(9).reshape(3,3)
io.savemat("a.mat",{'array':a})
data = io.loadmat('a.mat')
data,type(data)

上面一段代码的运行结果如下图所示:

img_8054630183cfbc52ece145fd3eec154b.png
image.png

从上面的结果可以看出,io.loadmat方法的返回值是字典dict。

练习

获取昨日排行第一的电影信息包含(电影名称、累计票房及上映天数),显示该电影自放映到昨日的所有累计票房线性趋势。提示:ts.day_boxoffice(‘日期’)方法获取单日电影票房数据

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import datetime
from scipy import signal
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

def getDayList(day_number):
    day_list = []
    now_time = datetime.datetime.now()
    for i in range(-int(day_number),0):
        day = now_time + datetime.timedelta(days=i)
        dayStr = day.strftime("%Y-%m-%d")
        day_list.append(dayStr)
    return day_list

def getMovieRecord(movieName):
    df = ts.day_boxoffice()
    day_number = df[df['MovieName']==movieName].MovieDay.values[0]
    day_list = getDayList(day_number)
    record_list = []
    for day in day_list:
        try:
            movie_all = ts.day_boxoffice(day)
            record = movie_all[movie_all['MovieName'] == movieName].copy()
            record['date'] = day
            record_list.append(record)
        except Exception as e:
            print(str(e))
    return pd.concat(record_list).reset_index(drop=True)

def drawTrend(movieRecord):
    x_ticks = [k[5:] for k in movieRecord['date'].values]
    x = range(len(x_ticks))
    y = movieRecord['BoxOffice'].values.astype('int')
    plt.xticks(x, x_ticks)
    plt.plot(x,y,label='走势图')
    plt.scatter(x,y, color='r')
    y2 = y - signal.detrend(y)
    plt.plot(x,y2,label='潜在趋势图')
    plt.ylim(0,50000)
    movieName = movieRecord['MovieName'].values[0]
    plt.title("《%s》电影上映后票房走势图" %movieName)
    plt.xlabel('日期')
    plt.ylabel('单日票房')
    plt.legend()
    plt.show()
    
if __name__ == "__main__":
    movieName = ts.day_boxoffice().iloc[0]['MovieName']
    movieRecord = getMovieRecord(movieName)
    drawTrend(movieRecord)

运行结果如下图所示:


img_d3d93ef8ce56578b2f8811674ebc91d7.png
票房走势图.png
目录
相关文章
|
11天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
Python
深入理解Python装饰器:从入门到实践####
本文旨在通过简明扼要的方式,为读者揭开Python装饰器的神秘面纱,从基本概念、工作原理到实际应用场景进行全面解析。不同于常规的摘要仅概述内容概要,本文将直接以一段精炼代码示例开篇,展示装饰器如何优雅地增强函数功能,激发读者探索兴趣,随后深入探讨其背后的机制与高级用法。 ####
43 11
|
8天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
8天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
8天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
5天前
|
Python
SciPy 教程 之 Scipy 显著性检验 9
SciPy 教程之显著性检验:介绍显著性检验的基本概念、目的及在SciPy中的实现方法。通过scipy.stats模块进行显著性检验,包括正态性检验(使用偏度和峰度),并提供代码示例展示如何计算数据集的偏度和峰度。
13 2
|
8天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
20 3
|
11天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
8天前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
16 1
|
10天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
下一篇
无影云桌面