数据分析练习题
Posted pandaboy1123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析练习题相关的知识,希望对你有一定的参考价值。
一、选择题
+----------------------------------------------------------------------------+
1.一般来说,当居民的收入减少时,居民储蓄存款也会相应减少,二者之间的关系是(B)
A.负相关
B.正相关
C.零相关
D.曲线相关
+----------------------------------------------------------------------------+
2.对客户的生命周期进行分类主要使用以下哪个方法?(A)
A.聚类分析
B.判别分析
C.逻辑回归
D.线性回归
+----------------------------------------------------------------------------+
3.下列哪项不属于数据预处理阶段做的任务?(B)
A.数据清洗
B.数据变换
C.数据建模
D.数据规约
+----------------------------------------------------------------------------+
4.对于给定大量数据集中存在的缺失值,以下哪种处理方式不得当?(D)
A.对数值进行插补算法填充
B.就近数值补齐法
C.采用回归算法填充(线性相关时)
D.以0或nan值替代
+----------------------------------------------------------------------------+
5.使用SQL语句进行分组检索时,为了去掉不满足条件的分组,应当(B)
A.使用WHERE子句
B.在GROUPBY后面使用HAVING子句
C.先使用WHERE子句,再使用HAVING子句
D.先使用HAVING子句,再使用WHERE子句
+----------------------------------------------------------------------------+
二、填空题
+----------------------------------------------------------------------------+
1.DataFrame是python三方库中的____(pandas)特有的数据结构,用于比较契合统计分析中的表结构。
+----------------------------------------------------------------------------+
2.SQL语句中,通常使用内置聚合函数____(AVG())来求平均值,____(SUM())函数来求和。
+----------------------------------------------------------------------------+
3.python中常用的数据处理三方库有____(numpy)、____(pandas)、可视化库有____(matplotlib)。
+----------------------------------------------------------------------------+
4.以下python代码中,继承的顺序是_____(A->B->C1->C2->D->object)。
class D(object):
def foo(self):
print(‘from D‘)
class C2(D):
def foo(self):
print(‘from C2‘)
class C1(C2):
def foo(self):
print(‘from C1‘)
class B(C1):
def foo(self):
print(‘from B‘)
class A(B):
def foo(self):
print(‘from A‘)
print(A.__mro__)
+----------------------------------------------------------------------------+
5.python下列代码的输出是____(先打印[1]再打印[1, 1])
def foo (i= []):
i.append (1)
return i
print(foo())
print(foo())
+----------------------------------------------------------------------------+
三、简答题
+----------------------------------------------------------------------------+
1.mysql数据量特别大,查询过程中很耗时间,如何进行优化?
一般来说mysql数据库可以接收几十万的数据查询,如果有千万或者亿级别的数据集,同时sql的查询语句
又相对困难,建议对mysql内部的数据进行增加索引的操作以提高数据的查询效率(底层就是二叉树算法优化)
+----------------------------------------------------------------------------+
2.数据分析项目的步骤?
·问题定义
·数据挖掘
·数据准备
·模型化
·数据认证
·实施跟踪
+----------------------------------------------------------------------------+
3.数据挖掘和数据分析之间的区别是什么?
【数据分析】:针对个别属性的实例分析。提供有关属性的各种信息,
如值范围,离散值及其频率,空值的发生,数据类型,长度等。
【数据挖掘】:重点关注聚类分析,异常记录检测,依赖关系,序列发现,多个属性之间的关系控制等。
+----------------------------------------------------------------------------+
4.python中的装饰器的作用?
装饰器可用于修饰函数或类。
通过装饰器可以包裹函数或类使之执行之前或之后调用装饰器函数,
从而达到抽离出大量函数中与函数功能本身无关的雷同代码并继续重用的目的。
比较经典的场景有检验权限,追踪参数,日志登陆等,需要在函数前编写,调用时使用@语法糖
通用版装饰器
def wrapper(f): #装饰器函数,f是被装饰的函数
def inner(*args,**kwargs):
‘‘‘在被装饰函数之前要做的事‘‘‘
ret = f(*args,**kwargs) #被装饰的函数
‘‘‘在被装饰函数之后要做的事‘‘‘
return ret
return inner
+----------------------------------------------------------------------------+
5.python的数据集类型有哪些?哪些是有序的,哪些是无序的?
列表(list)、元祖(tuple)、字典(dict)、集合(set)
有序list、tuple
无序dict、set
+----------------------------------------------------------------------------+
四、编程题
+----------------------------------------------------------------------------+
1.编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,
然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。
如果可以变为 1,那么这个数就是快乐数
示例:
输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
python实现:
class Solution:
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
sum1 = 0
new_n = n
check = []
while sum1 != 1:
for i in check:
if check.count(i) >= 2:
print(new_n , ‘不是快乐数!‘)
return False
li = []
for i in str(n):
li.append(int(i))
l = map(lambda x: x ** 2, li)
ki = []
for i in l:
ki.append(i)
sum1 = sum(ki)
check.append(sum1)
n = sum1
else:
print(new_n , ‘是快乐数!‘)
return True
S = Solution()
S.isHappy(19)
+----------------------------------------------------------------------------+
2.给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
python实现:
class Solution:
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
if type(num) == int:
li_num = list(str(num))
while True:
sum_num = 0
for i in li_num:
sum_num += int(i)
if len(str(sum_num)) == 1:
break
li_num = list(str(sum_num))
return int(sum_num)
else:
print(‘错误的输入‘)
+----------------------------------------------------------------------------+
3.编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary)
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,
SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
SQL实现:
SELECT
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1) AS SecondHighestSalary;
+----------------------------------------------------------------------------+
以上是关于数据分析练习题的主要内容,如果未能解决你的问题,请参考以下文章