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
目录
相关文章
|
27天前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
67 0
|
8天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
76 1
|
1月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
97 0
|
1月前
|
IDE 开发工具 数据安全/隐私保护
Python循环嵌套:从入门到实战的完整指南
循环嵌套是Python中处理多维数据和复杂逻辑的重要工具。本文通过实例讲解嵌套循环的基本用法、常见组合、性能优化技巧及实战应用,帮助开发者掌握其核心思想,避免常见错误,并探索替代方案与进阶方向。
104 0
|
13天前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
81 5
|
3月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
216 80
|
26天前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
29天前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
41 0
|
1月前
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
122 0

推荐镜像

更多