赞
踩
大家好,今天整理了数据分析面试题集锦(二),经常会被问到,“数据分析需要学习什么技能?”,“针对实际的业务场景,如何使用数据分析工具去分析?”基于此作者总结数据分析面试常用的问题,面试内容包括技能应用篇:EXCEL、SQL、Python、BI工具等,业务思维篇:常用的数据分析方法与业务思维等。
其中大部分的问题点,没有绝对标准的答案,所有的问题点都是为了解决问题去设置,大家如果有更好的问题答案,也可以提出,对于其中的问题也可以提出,共同解答,欢迎点赞、转发、评论,下面一起来学习。
本文讲解内容:Excel、SQL、Python面试必备
适用范围:多种数据分析实用技巧
Excel篇
1、Excel如何提取指定字符内容
分别提取货号和销售单编号里的字母和数字。
提取货号字母
=LEFT(C2,3)
提取货号数字
=RIGHT(C2,4)
提取单号字母
=LEFT(D2,FIND("-",D2)-1)
提取单号数字
=MID(D2,FIND("-",D2)+1,100)
2、Excel如何数据逆透视
将横向数据转为纵向数据,选择横向单元格区域,点击数据选项卡,点击获取与转换中的从表格,点击创建表。
在主页中单击将第一行用作标题。
按住Ctrl键选中不需要逆透视的列,在转化选项卡下点击逆透视其他列。
如框选的部分,数据完成逆透视,在主页选项卡下点击关闭并上载功能,将数据加载至sheet表中。
3、Excel数据如何分组合并
数据分组后合并,选择单元格数据区域,点击数据选项卡,点击获取与转换中的从表格,点击创建表。
选择转换选项卡分组依据,分组类别为产品类别,柱为产品名称,操作为求和,点击确定。
将阴影选中的公式部分List.Sum替换为Text.Combine。
如框选的部分,数据完成分组合并,在主页选项卡下点击关闭并上载功能,将数据加载至sheet表中。
SQL篇
1、SQL的执行顺序
大多数编程语言代码都是按编码顺序执行的,但是在SQL语言中,第一个被执行的语句是FROM子句,每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入,如下的顺序即SQL的执行顺序。
- (8)SELECT (9)DISTINCT (11)<Top Num> <select list>
- (1)FROM [left_table]
- (3)<join_type> JOIN <right_table>
- (2)ON <join_condition>
- (4)WHERE <where_condition>
- (5)GROUP BY <group_by_list>
- (6)WITH <CUBE | RollUP>
- (7)HAVING <having_condition>
- (10)ORDER BY <order_by_list>
2、计算用户的平均次日留存率
使用date_add计算一天后的日期,使用distinct device_id,date计算得出设备ID和答题日期,再计算第二天,再通过左连接,将构造的第二天和实际答题表对接,连接条件为设备ID相同,构造的第二天和真实的答题日期相同,因为是左连接,所以右侧没有符合条件的会是空值,最后就是count计算。
- select count(t3.device_id)/count(t2.device_id) as avg_ret
- from (select t1.*,date_add(t1.date,interval 1 day) as diertian
- from (select distinct device_id,date from question_practice_detail ) as t1) as t2
- left join (select distinct device_id,date from question_practice_detail) as t3
- on t2.device_id=t3.device_id and t2.diertian=t3.date;
Python篇
1、批量合并同一文件夹不同工作簿数据
第一个方法,使用OS库遍历出文件夹中的各个工作簿名称,df导入第一个工作簿,dfi循环导入其他工作簿,最后使用concat函数进行两个列表合并。
- import pandas as pd
- import os
- path=r'C:\Users\尚天强\Desktop\测试'
- listdir=os.listdir(path)
-
- df=pd.read_excel(path+'\\'+ listdir[0])#导入第一个数据表
- for filename in listdir[1:]:
- dfi=pd.read_excel(path+'\\'+ filename) #导入除第一个数据表外其他数据表
- df=pd.concat([df,dfi]) #数据纵向合并
- df.to_excel(path+'\\'+'数据合并.xlsx',index=False)
第二个方法,建立一个空的列表[],df跳过表头循环导入数据,将循环导入的数据使用extend函数合并值空的列表dfs中,最后用concat函数列表合并。
- import pandas as pd
- import os
- dfs = []
- read_path=r'C:\Users\尚天强\Desktop\测试数据'
- save_path=r'C:\Users\尚天强\Desktop'
- save_name='out_table.xlsx'
-
- for fname in os.listdir(read_path):
- if fname.endswith(".xlsx") and fname !=save_name:
- df = pd.read_excel(read_path+"\\"+fname,skiprows=1,header=None,sheet_name=None) #names=['序列','日期','销量']
- dfs.extend(df.values())
- #合并
- result = pd.concat(dfs)
-
- #导出数据
- result.to_excel(save_path+"\\"+save_name,index=False,header=['id','number','sale'])
2、批量合并不同工作簿不同sheet表数据
该方法首先建一个空的表格,使用openpyxl库,循环导入不同工作簿,不同sheet表,不同行的数据,然后进行合并。
- from openpyxl import Workbook,load_workbook
- import os
-
- def concat_data(file_path,save_path):
- files_name=os.listdir(file_path)
- #创建新表格
- new_wb=Workbook()
- new_ws=new_wb.active
- header=['销售日期', '员工工号', '销售员', '货号', '销售单编号', '销量', '销售额']
- new_ws.append(header)
- #向新的表格写入数据
- for file_name in files_name:
- wb=load_workbook(file_path+"\\"+file_name)
- for sheet in wb.sheetnames:
- ws=wb[sheet]
- for row in ws.iter_rows(min_row=2,values_only=True):
- new_ws.append(row)
- #数据保存
- new_wb.save(save_path+"\\"+"数据合并.xlsx")
-
- concat_data(r"C:\Users\尚天强\Desktop\2017年销售明细",r"C:\Users\尚天强\Desktop")
3、Python批量数据拆分
如果将汇总的数据表按照某个品牌或者企业进行批量拆分,首先使用unique函数将需要拆分的字段去重,然后使用df.loc函数循环筛选,最后数据导出。
- import pandas as pd
- df=pd.read_excel(r'C:\Users\尚天强\Desktop\数据批量拆分.xlsx')
- city=df['城市'].unique().tolist()
- for i in city:
- df1=df.loc[df['城市']==i]
- df1.to_excel(r'C:\Users\尚天强\Desktop'+'\\'+ i + '.xlsx',index=False)
4、Python计算当前时间进度
计算当前的时间进度,定义一个字典,月份键对应着天数值,使用datetime函数计算求得。
- import datetime #时间进度
- dic = {"1月": 31, "2月": 28, "3月": 31, "4月": 30, "5月": 31, "6月": 30, "7月": 31, "8月": 31, "9月": 30, "10月": 31,"11月": 30, "12月": 31}
- for i in range(12):
- if datetime.datetime.now().month == i + 1:
- timing = round((datetime.datetime.now().day / dic["{}月".format(i + 1)]) ,2)
- print('当前本月时间进度为:{:.0%}'.format(timing))
当前本月时间进度为:35%
5、Python计算数据环比
计算数据的环比,这里首先使用numpy构建一组随机数,然后使用pct_change函数计算环比,最后apply结合lambda函数自定义数据格式为保留两位小数的百分数格式。
- import pandas as pd
- import numpy as np
- df=pd.DataFrame(data=np.random.randint(100, 500, (7, 1)),
- index=pd.date_range('2021/12/01',periods=7),
- columns=['销量'])
- df['环比']=df['销量'].pct_change().apply(lambda x:format(x,'.2%'))
- df
本文首发于公众号:大话数据分析,内容整理不易,欢迎转发评论分享,持续更新数据分析内容~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。