数据分析面试题集锦(一)

教育   2024-12-17 16:03   黑龙江  

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 table1.字段号=table2.字段号;

(2)左连接

左连接(left join)返回左表中所有记录和右表中连接字段相等的记录,如果两个表中字段并不完全一一对应,想要那些没有对应的字段也显示出来就可以使用左连接和右连接查询,左连接两表的例子:

select * from table1 left join table2 on table1.字段号=table2.字段号;

(3)右连接

右连接(right join)返回右表中所有记录和左表中连接字段相等的记录,语法与左连接同,右连接两表的例子:

select * from table1 right join table2 on table1.字段号=table2.字段号;

2、简述SQL子查询

子查询就是把一个查询的结果在另一个查询中使用,根据子查询的用法可以分为单行子查询和多行子查询:

(1)单行子查询

返回的结果集为单个的子查询,叫做单行子查询,单行比较符有 >、>=、<、<=、!=

(2)多行子查询

返回的结果集为多个的子查询,为多行子查询,多行子比较符有 IN(等于列中任意一个)、ANY(和子查询返回的某个值比较),ALL(和子查询返回的所有值比较)。

同时,根据子查询在SQL语句的位置,可分为select子查询、from子查询、where子查询。

3、简述SQL窗口函数

窗口函数可以对数据库数据进行实时分析处理,语法如下:

select *,窗口函数 over (partition by 用于分组的列名                        order 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=Non



职业规划解决方案

开启职业新征程

职业规划帮你掌握人生航向

了解自己的优势,找到适合自己的岗位!

人生不只有一条路,

职业规划帮你发现更多可能性!

赶快来了解一下吧

👇👇👇


扫码添加即可抢占名额

仅需9.9元

让爱数据助力你的职场生涯

END

想要获取更多精彩的内容和个性化的功能吗?
快来点击菜单栏,开启新的体验吧!


如果您认为我们的公众号内容对您有帮助,请分享给您的朋友们,

并把它设为星标
⭐,方便您随时查看。



爱数据LoveData
国内领先数据分析社区,专注数据分析知识分享及求职辅导。爱数据作为一线数据厂商(帆软、观远、永洪等)培训合作伙伴,曾联合阿里、美团、滴滴等一线公司开展数据领域专题分享会。积累10年+行业经验,链接千人数据分析高端人脉,累计服务15w+用户。
 最新文章