數(shù)據(jù)分析崗Python筆試題
我整理了數(shù)據(jù)分析師崗的Python筆試題,主要涉及到用Python完成數(shù)據(jù)處理和分析的內(nèi)容。自己做了一遍,供大家學習思考。
一、數(shù)據(jù)處理題
1.將Excel工作簿 “Test.xlsx” 作為dataframe導入 Jupyter Notebook,并將dataframe命名為a. 導入后dataframe x應為如下: 輸出結(jié)果

- import pandas as pd
- import numpy as np
- a = pd.read_excel('Test.xlsx')

第1題
2.dataframe a 中, class1-class5 指總共5門課,每個學生選兩門,列出期中(midterm)、期末(final)成績(A/B/C)。請用Python語言處理表格,將class1-class5列去除,并增加 class 和 grade 兩列,使新dataframe的值與原dataframe對應,并將新dataframe命名為b. 輸出結(jié)果應為如下: 輸出結(jié)果

- #1.先設(shè)置索引列——復合索引,用列表
- #2.stack()旋轉(zhuǎn)列為行,默認是旋轉(zhuǎn)最內(nèi)層,并且刪除空值
- #3.重置索引
- #4.更改列名
- b = a.set_index(["name","test"]).stack().reset_index()
- b.columns=['name','test','class','grade']
- b
用Python語言將dataframe b 的test列分成midterm和final兩列,這兩列的值是選的兩門課的成績。將新dataframe命名為c。輸出結(jié)果應為如下: 輸出結(jié)果

- c = b.set_index(['name','class','test']).unstack()

第2題
4.如下為dataframe d 和 dataframe e DataFrame d and e

請用Python語言將dataframe d 和 dataframe e 匹配, 輸出結(jié)果應為如下: 輸出結(jié)果

- #水果價格信息表
- d = pd.DataFrame({'水果':['apple','apple','banana','banana','orange','orange'],
- '個頭':['high','low']*3,
- '單價':[5,3,4,2,7,5]})
- #水果訂單
- e = pd.DataFrame({'水果':['apple','banana','orange']*2,
- '個頭':['high','low']*3,
- '重量':np.random.randint(1,15,6)})
- pd.merge(d,e,how='inner')
如下是dataframe f DataFrame f

請用python語言得出每節(jié)課(class)和每個年級 (grade) 下, 學生的數(shù)量和平均成績。輸出結(jié)果應為如下: 輸出結(jié)果

- f = pd.DataFrame(['Sally','David',"Jon",'Jon'],columns=['name'])
- f['score']=[95,99,80,83]
- f['class']=['A','A','A','B']
- f['grade']=['grade 1','grade 2','grade 1','grade 2']
- f
- #方法一:使用groupby
- f.groupby(['class','grade']).agg({'name':'count','score':'mean'})
- #方二:使用pivot_table
- f.pivot_table(index=['class','grade'],values=['name','score'],aggfunc={'name':'count','score':'mean'})
6.如下是dataframe h DataFrame h

請用Python語言得出每行最小值除以每行最大值的商。輸出結(jié)果應為如下: 輸出結(jié)果

- np.random.seed(10)
- h=pd.DataFrame(np.random.randint(1,100,80).reshape(8,-1))
- min_by_max=h.min(axis=1)/h.max(axis=1)
- min_by_max
7.如下是dataframe i DataFrame i

請用Python語言將dataframe i 里Min. Price 列中的NaN值替換成Min. Price 列的平均值, 并將 Max.Price 列中的NaN值替換成Max.Price列的中位數(shù)。輸出結(jié)果應為如下(未截全): 輸出結(jié)果

- i=pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')
- i.head()
- i['Min.Price'].fillna(i['Min.Price'].mean(),inplace=True)
- i['Max.Price'].fillna(i['Max.Price'].median(),inplace=True)
- i.isnull().sum()