大家好,今天整理了数据分析面试题集锦(一),经常会被问到,“数据分析需要学习什么技能?”,“针对实际的业务场景,如何使用数据分析工具去分析?”基于此作者总结数据分析面试常用的问题,面试内容包括技能应用篇:EXCEL、SQL、Python、BI工具等,业务思维篇:常用的数据分析方法与业务思维等。
其中大部分的问题点,没有绝对标准的答案,所有的问题点都是为了解决问题去设置,大家如果有更好的问题答案,也可以提出,对于其中的问题也可以提出,共同解答,欢迎点赞、转发、评论,下面一起来学习。
本文讲解内容:Excel、SQL、Python面试必备
适用范围:多种数据分析实用技巧
Excel篇
1、简述EXCEL中REPLACE函数与SUBSTITUTE函数的区别
REPLACEB根据指定的字符数,REPLACE 将部分文本字符串替换为不同的文本字符串。
REPLACEB(old_text, start_num, num_bytes, new_text)
SUBSTITUTE在文本字符串中用 new_text 替换 old_text。
SUBSTITUTE(text, old_text, new_text, [instance_num])
如果需要在某一文本字符串中替换指定的文本,使用函数 SUBSTITUTE,如果需要在某一文本字符串中替换特定位置处的任意文本,使用函数 REPLACE。
2、简述EXCEL中FIND函数与SEARCH函数的区别
FIND在一个文本值中查找另一个文本值(区分大小写)。
FIND(find_text, within_text, [start_num])
SEARCH在一个文本值中查找另一个文本值(不区分大小写)。
SEARCH(find_text,within_text,[start_num])
FIND函数区分大小写,并且不允许使用通配符,而SEARCH函数不区分大小写,可以使用通配符查询。
3、如何利用数据透视表实现非重复计数
如果在透视表里以非重复计数项的话,需要在创建数据透视表的时候,勾选将此数据添加到数据模型(M)。
添加数据透视表字段,选中数据区域点击值字段设置,在这里选择需要的计数方法,要统计非重复数值,就选择非重复计数。
PS:只有.xlsx格式的文件才能添加数据模型,使用透视表非重复计数功能,.xls和.csv格式的文件都不能使用。
SQL篇
1、简述SQL关联查询
根据SQL中的链接关系可以分为一对一连接、一对多连接、多对多连接。
(1)内连接
内连接只返回两个表中连接字段相等的行,如下将两个表内连接:
select * from table1 inner join table2 on
(2)左连接
左连接(left join)返回左表中所有记录和右表中连接字段相等的记录,如果两个表中字段并不完全一一对应,想要那些没有对应的字段也显示出来就可以使用左连接和右连接查询,左连接两表的例子:
select * from table1 left join table2 on
(3)右连接
右连接(right join)返回右表中所有记录和左表中连接字段相等的记录,语法与左连接同,右连接两表的例子:
select * from table1 right join table2 on
2、简述SQL子查询
子查询就是把一个查询的结果在另一个查询中使用,根据子查询的用法可以分为单行子查询和多行子查询:
(1)单行子查询
返回的结果集为单个的子查询,叫做单行子查询,单行比较符有 >、>=、<、<=、!=
(2)多行子查询
返回的结果集为多个的子查询,为多行子查询,多行子比较符有 IN(等于列中任意一个)、ANY(和子查询返回的某个值比较),ALL(和子查询返回的所有值比较)。
同时,根据子查询在SQL语句的位置,可分为select子查询、from子查询、where子查询。
3、简述SQL窗口函数
窗口函数可以对数据库数据进行实时分析处理,语法如下:
select *,窗口函数 over (partition byorder by
窗口函数主要是两类函数,一类是用于分组排序的rank、dense_rank、row_number等专用窗口函数,另一类是聚合函数sum、avg、count、max、min等聚合函数,与group by分组相比,group by分组汇总后改变了表的行数,一行只有一个类别,而partiition by和rank函数不会减少原表中的行数。
Python篇
1、loc和iloc的区别
loc是通过行标签索引index来索引行数据,标签索引可以是字符,可以是整数,iloc是根据行号来索引,行号从0开始,逐次加1,iloc的列参数只能是整数,不能是字符,当用行号索引的时候, 尽量用 iloc 来进行索引,而用标签索引的时候则用 loc。
2、append、concat、jion、merge的区别
append()的默认操作效果跟concat()相同, 都是实现两个DataFrame的纵向连接。事实上可以把它看做concat()的早期版本,concat可以设置axis=1做横向连接,而append只能做纵向连接。
df = df1.append(df2, ignore_index=True)df = pd.concat([df1, df2], ignore_index=True)df = pd.concat([df1, df4], axis=1)#concat横向连接
concat, append默认用来纵向连接DataFrame对象,join和merge用来横向连接DataFrame对象,df.join相同行索引的数据被合并在一起,与merge相似,只是join方法默认为左外连接how='left',而merge有多种连接方式。
df=df1.join(df2)df = pd.merge(left, right, on='key')
根本区别在于是否基于"键"来进行合并,如果只是简单地上下堆砌,则用concat和append比较合适,而如果遇到关联表进行左右拼接,需要根据"键"来合并,则用merge和join。
同时,concat 和 merge是pandas的属性,所以调用的时候应该写成pd.concat()或者pd.merge(),而append和join是对DataFrame的方法,所以调用的时候应该写成df.append()或者df.join()。
3、groupby、pivot_table、crossta的区别
类似excel的数据透视表,一般是按照行进行分组。
df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True,squeeze=False, observed=False, **kwargs)
与excel的数据透视表功能相似,使用方法pd.pivot_table,或直接使用df.pivot_table的方法,既能按照行分组,也能按照列分组。
pivot_table(self, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
交叉表的功能较简单,默认用来统计元素出现的频数,使用方法如下。
pd.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)
标签:数据分析,面试题,join,函数,text,查询,集锦,连接,concat From: https://blog.51cto.com/u_15828536/5757048