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
目录
相关文章
|
1月前
|
监控 安全 应用服务中间件
python中Django入门(四)
python中Django入门(四)
31 0
|
23天前
|
Java Python 开发者
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
线程池详解与异步任务编排使用案例-xian-cheng-chi-xiang-jie-yu-yi-bu-ren-wu-bian-pai-shi-yong-an-li
72 2
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
|
29天前
|
存储 安全 API
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
74 0
|
1天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
10 1
|
1天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
23 0
|
2天前
|
机器学习/深度学习 数据采集 算法
scikit-learn入门指南:从基础到实践
【4月更文挑战第17天】这篇指南介绍了scikit-learn,一个Python数据分析和机器学习的重要库。内容涵盖安装、数据加载与预处理、模型训练(如KNN分类器)、评估、调参优化及高级应用,如降维和聚类。通过实例展示了scikit-learn在分类任务中的使用,强调其在数据科学中的重要性。要深入了解,可参考官方文档和实践案例。
|
3天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
8天前
|
JavaScript 前端开发 API
游戏开发入门:Python后端与Vue前端的协同工作方式
【4月更文挑战第11天】使用Python后端(Flask或Django)和Vue.js前端开发游戏变得流行,能提高开发效率和可维护性。本文指导如何构建这样的项目,包括设置环境、创建虚拟环境、搭建后端API及前端Vue组件,强调前后端协作和API接口的重要性。这种架构促进团队合作,提升代码质量和游戏体验。
|
10天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。
|
12天前
|
机器学习/深度学习 数据可视化 数据挖掘
利用Python进行数据分析与可视化:从入门到精通
本文将介绍如何使用Python语言进行数据分析与可视化,从基础概念到高级技巧一应俱全。通过学习本文,读者将掌握Python在数据处理、分析和可视化方面的核心技能,为实际项目应用打下坚实基础。