考察内容包括numpy、pandas、matplotlib这3个库的内容

1、请写出numpy中创建数组的方式

答:np.arange、np.array、np.ones、np.zeros、np.full

2、numpy常规操作题:

(1)用numpy中的随机函数np.random.rand(5,5),生成一个5x5的数组,并使用numpy中的切片、索引以及索引搜等方法,将数据根据第二列的数据大小进行重新排序(图中数据仅作为演示用)

image.png

a = np.random.rand(5,5)
print("排序前:")
print(a)
a_sorted = a[np.argsort(a[:,1])]
print('按照第二列的值排序后:')
print(a_sorted)

运行结果如下图所示:

题2-1运行结果.png

(2) 用numpy至少两种方法生成如下所示的数组

image.png

第一种解法:

import numpy as np
m = np.ones((10,10))
m[1:-1,1:-1] = 0
print(m)

第二种解法:

import numpy as np
m = np.ones((10,10))
m[1:-1,1:-1] = np.zeros((8,8))
print(m)

第三种解法:

import numpy as np
m = np.zeros((10,10))
m[0] = 1
m[:,0] = 1
m[-1] = 1
m[:,-1] = 1
print(m)

(3)编写代码,判断第数组一中的每个元素在数组二中是否存在
数组一:[ 0 10 20 40 60]
数组二:[0, 40]
结果:[ True False False True False]

import numpy as np
m1 = np.array([0,10,20,40,60])
m2 = np.array([0, 40])
r1 = m1==m2[0]
r2 = m1==m2[1]
print(r1 | r2)

(4)编写代码,实现查找出两个numpy数组中相同的元素
数组一: [ 0 10 20 40 60]
数组二:[10, 30, 40]
结果:[10 40]

import numpy as np
m1 = np.array([0,10,20,40,60])
m2 = np.array([10,30,40])
print([k for k in m1 if k in m2])

(5)编写代码,实现查找出给定数组中比10大的数,返回新的数组values,同时给出比10大的数在原数组中的索引
给定数组:[[ 0 10 20] [20 30 40]]
求如下数组:
Values: [20 20 30 40]
索引数组: (array([0, 1, 1, 1]), array([2, 0, 1, 2]))

import numpy as np
a = np.array([[0,10,20],[20,30,40]])
pos = a > 10
Values = a[pos].ravel()
print(Values)
indexList = []
for i in range(2):for j in range(3):if pos[i][j]:indexList.append([i,j])
indexArray = np.array(indexList).T
print(indexArray)

3、实时电影票房数据集

请使用tushare模块提供的api并结合numpy、scipy等模块,获取前一天电影排行数据中上映天数大于7中日平均票价最高的电影,分析该电影近一个星期的票房及电影票价的走势,要求分别绘制出票房走势和平均票价走势。
getDay7Movies函数的作用是获取上映时间超过7天的电影,返回值的数据类型为DataFrame
getDayList函数的作用是获取日期列表,列表中元素的数据类型为字符串str,如下图所示:

getDayList函数.png

getMovieWeekRecord函数的作用是得到电影最近一周的票房信息,需要一个参数,参数数据类型为字符串str,函数返回值的数据类型为DataFrame
drawBoxOffice函数的作用是画出票房趋势图
drawAvgPrice函数的作用是画出平均票价趋势图
解答代码如下,复制到py文件中可以直接运行,运行前安装tushare库命令:pip install tushare

import tushare as ts
import datetime
import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']def getDay7Movies():movie_df = ts.day_boxoffice()selected_df = movie_df[\movie_df['MovieDay'].values.astype('int') > 7]sorted_df = selected_df.sort_values(by='AvgPrice',ascending=False)return sorted_df.reset_index(drop=True)def getDayList():day_list = []now_time = datetime.datetime.now()for i in range(-9,0):day = now_time + datetime.timedelta(days=i)dayStr = day.strftime("%Y-%m-%d")day_list.append(dayStr)return day_listdef getMovieWeekRecord(movieName):day_list = getDayList()record_list = []for day in day_list:try:movie_all = ts.day_boxoffice(day)record = movie_all[\movie_all['MovieName'].values == movieName].copy()record['date'] = dayrecord_list.append(record)except Exception as e:print(str(e))return pd.concat(record_list).reset_index(drop=True)def drawBoxOffice(movieWeekRecord):x_ticks = [k[5:] for k in movieWeekRecord['date'].values]x = range(len(x_ticks))y = list(movieWeekRecord['BoxOffice'].values.astype("f"))movieName = movieWeekRecord['MovieName'].iloc[0]plt.title("《%s》电影最近一周票房走势图" %movieName)plt.xlabel('日期')plt.ylabel('单日票房')plt.xticks(x,x_ticks)plt.plot(x,y)plt.show()def drawAvgPrice(movieWeekRecord):x_ticks = [k[5:] for k in movieWeekRecord['date'].values]x = range(len(x_ticks))y = list(movieWeekRecord['AvgPrice'].values.astype('int'))movieName = movieWeekRecord['MovieName'].iloc[0]plt.title("《%s》电影最近一周平均票价走势图" %movieName)plt.xlabel('日期')plt.ylabel('平均票价')plt.xticks(x,x_ticks)plt.ylim(min(y)-5,max(y)+5)plt.plot(x,y)plt.show()if __name__ == "__main__":day7Movies = getDay7Movies()movieName = day7Movies.iloc[0]['MovieName']print("上映天数大于7中日平均票价最高的电影为:",movieName)movieWeekRecord = getMovieWeekRecord(movieName)drawBoxOffice(movieWeekRecord)drawAvgPrice(movieWeekRecord)

运行结果如下图所示:

题3运行结果.png

4、订单交易记录数据集

题目数据集csv文件下载链接: https://pan.baidu.com/s/1-pO92xn2NxGCSO5R3j1XTQ 密码: e1b4
文件中一部分数据如下图所示,其中包含:
order_id: 订单id号
account_id:消费账户id
bank_to:银行代码
account_to:消费账号
amoount:消费金额
k_symbol:备注

题4部分数据.png

(1)根据bank_to字段,用numpy统计出每不同bank_to字段下所有消费记录的均值、最大值、最小值、并求和。

import pandas as pd
import numpy as np
df = pd.read_csv('order.csv',encoding='gbk')
df_sorted = df.groupby('bank_to').groups
df_sorted_keys = df_sorted.keys()
result_list = []
for key in df_sorted_keys:group = {}group['bank_to'] = keyamoutNdarray = df.values[df_sorted[key].values][:,4]group['mean'] = np.mean(amoutNdarray)group['max'] = np.max(amoutNdarray)group['min'] = np.min(amoutNdarray)result_list.append(group)
df_group = pd.DataFrame(result_list)
matrix = df_group.values
print(np.sum(matrix[:,1]),np.sum(matrix[:,2]),np.sum(matrix[:,3]))

(2) 然后将每个字段分类下的所有消费记录写入到一个新的csv文件中,
输出文件中包含:CD.csv IJ.csv QR.csv AB.csv ……….

import pandas as pd
df = pd.read_csv('order.csv',encoding='gbk')
df_sorted = df.groupby('bank_to')
for key,group in df_sorted:print(key)csvName = "%s.csv" %keyprint(group.keys())
group.to_csv(csvName,columns=group.keys())

5、正态分布数据集

编写python代码,用随机函数生成一个有100个样本点的正态分布数据集,并根据数据集完成如下需求:
(1)求数据样本的偏度和分度,根据偏度和峰度值判断数据样本是正偏还是负偏,是高峡峰还是低阔峰。
(2)使用matplotlib库绘制出数据样本的分度直方图、
(3)编写代码说明在数据集中有多少个样本比1大,有多少个数据样本比1小。
答:(1)

import numpy as np
import pandas as pd
data = np.random.randn(100)
df = pd.DataFrame(data)
skew = df.skew()[0]
kurt = df.kurt()[0]
print("偏度为",skew)
print("峰度为",kurt)
print("样本是正偏" if skew > 0 else "样本是负偏")
print("样本是高峡峰" if kurt > 0 else "样本是低阔峰")

(2)(3)答案代码如下:

from matplotlib import pyplot as plt
import numpy as np
a = np.random.randn(100)
print("比1大的样本数量",np.sum(a>1))
print("比1小的样本数量",np.sum(a<1))
plt.hist(a)
plt.show()

Python数据科学库-小测验相关推荐

  1. Python 数据科学库入门

    Python 数据科学库入门 1.Numpy 1.1Numpy 简介 Numpy(Numerical Python) Numpy:提供了一个在 Python 中做科学计算的基础库,重在数值计算,主要用 ...

  2. python数据科学库_Python数据科学库

    python数据科学库 什么是数据科学? (What is Data Science?) We live in an information age, where the challenge is t ...

  3. Python数据科学库(三)

    Python数据科学库(三) 一.基本图形画法 (一)散点图 1.使用 2.参数 (二)折线图 1.使用 2.参数 3.案例 (三)条形图 1.使用 (1)水平条形图 (2)垂直条形图 2.参数 (四 ...

  4. Python数据科学库02(matplotlib)

    Python数据科学库02 学习02 matplotlib 对比常用统计图 折线图的更多应用场景: 1.呈现公司产品(不同区域)每天活跃用户数 2.呈现app每天下载数量 3.呈现产品新功能上线后,用 ...

  5. 27个Python数据科学库,千万不要错过!!

    为了大家能够对人工智能常用的 Python 库有一个初步的了解,以选择能够满足自己需求的库进行学习,对目前较为常见的人工智能库进行简要全面的介绍. 1.Numpy NumPy(Numerical Py ...

  6. 27 个Python数据科学库实战案例 (附代码)

    为了大家能够对人工智能常用的 Python 库有一个初步的了解,以选择能够满足自己需求的库进行学习,对目前较为常见的人工智能库进行简要全面的介绍. 1.Numpy NumPy(Numerical Py ...

  7. [python]-数据科学库Numpy学习

    一.Numpy简介: Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3 ...

  8. python中令人惊艳的小众数据科学库

    Python是门很神奇的语言,历经时间和实践检验,受到开发者和数据科学家一致好评,目前已经是全世界发展最好的编程语言之一.简单易用,完整而庞大的第三方库生态圈,使得Python成为编程小白和高级工程师 ...

  9. 有前途的人工智能大数据分析相关职业:Python数据科学入门之路

    2019独角兽企业重金招聘Python工程师标准>>> 为什么学习Python数据科学? Python是数据科学职业所需的宝贵技能之一.Python是数据科学的首选编程语言. 201 ...

最新文章

  1. VS2010中经常使用的快捷键
  2. iOS Sprite Kit教程之使用帮助文档以及调试程序
  3. RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比
  4. MySQL 笔记7 -- 权限操作与视图
  5. c++STL算法基础
  6. java缺_java – 缺少主类
  7. CentOS上使用netstat命令查证DDOS***
  8. Java中equals()和“==”区别
  9. HDU 5933 2016CCPC杭州 A: ArcSoft's Office Rearrangement
  10. weka的java环境配置_weka环境配置
  11. 认识java安全管理器SecurityManager
  12. 微信公众号post方法Java_Java HttpClient 如何伪装微信浏览器进行POST请求
  13. 一元三次方程组的解法
  14. [推荐]php编码规范
  15. iCMS前台存储型XSS漏洞
  16. 协同过滤推荐之基于模型协同过滤
  17. Qt:构建套件(Kits)
  18. 关于“网络适配器无WLAN”和“蓝牙已关闭”的一些补充
  19. 【OpenHarmony成长计划】#校园极客秀#碰一碰配网快速上手(附WSL编译环境搭建)
  20. matlab qam 格雷编码,89. 格雷编码

热门文章

  1. PHP消息队列实现及应用
  2. BZOJ2843 极地旅行社 LCT
  3. crm2011创建批量删除作业
  4. Java基础-自增自减运算符练习题
  5. 【Linux】【Shell】【Basic】字符串操作
  6. 可用的免费公开的DNS
  7. 延迟初始化Spring Bean的几种方式
  8. erlang 动态编译和加载遇到的问题。
  9. CentOS 6.3下NFS安装配置
  10. Xshell中文乱码问题