牛客网上的Python数据分析题
重点题型:
1.空值
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
print(Nowcoder.isnull().any())
去掉信息不全的用户
print(Nowcoder.dropna(how='any')
2.输出该数据集中语言为CPP、C、C#对应的所有列的信息,包括列号。
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',')
pd.set_option('display.width', 300) # 设置字符显示宽度
pd.set_option('display.max_rows', None) # 设置显示最大行
pd.set_option('display.max_columns', None)
print(Nowcoder[Nowcoder["Language"].isin(["CPP","C","C#"])])
3. 牛客网不同语言使用人数
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
print(Nowcoder["Language"].value_counts())
4. 假设2018年毕业的你突发奇想,想要知道牛客网有哪些使用CPP的7级用户,且他们的毕业年份和你不是同年的,请问该怎么筛选
print(Nowcoder[(Nowcoder["Level"]==7) & (Nowcoder["Language"]=="CPP") & (Nowcoder["Graduate_year"]!=2018)])
5.正在刷题的小白想知道牛客网刷题数量不低于500题的大佬,他们的等级和成就值是怎么样的
a=Nowcoder[Nowcoder["Num_of_exercise"]>=500]
print(a.iloc[:,[1,2]])
6.输出该数据集中常用语言所在列各种不同语言出现的次数。
print(Nowcoder["Language"].value_counts())
7.打算学习Python的小白同学打开了牛客网,他想知道Python到底难不难,于是他想从牛客网Python用户都平均提交了多少次代码来认识
b=Nowcoder[Nowcoder["Language"]=="Python"]
print(round(b["Number_of_submissions"].mean(),1))
8.你想知道这个文件中记录了多少种常用语言,一并输出这些语言的名字
print(Nowcoder["Language"].nunique()) #nunique()去重统计个数
print(Nowcoder["Language"].unique())#unique()显示去重列表
print(Nowcoder["Language"].drop_duplicates().count())
print(Nowcoder["Language"].drop_duplicates())
9.对于牛客网的等级制度,你很感兴趣,你想知道大部分人都在什么等级,你能找到文件中等级的众数吗?
print(pd.DataFrame(Nowcoder["Level"].mode(),columns=["Level"]))
10. 统计牛客网用户的名字长度
print(Nowcoder["Name"].str.len())##注意 类型转化【字符串】)
11. 修补缺失的用户数据
a=Nowcoder["Graduate_year"].max()
avg=Nowcoder["Achievement_value"].mean().round(0)
Nowcoder.fillna({"Graduate_year":a,"Language":avg},inplace=True)
print(Nowcoder)
12.解决牛客网用户重复的数据
print(Nowcoder.duplicated(subset=None, keep='first'))#返回true或false
print(Nowcoder.drop_duplicates())删除重复值
13.运营同学发现最后一次提交题目日期这一列有各种各样的日期格式,这对于他分析用户十分不友好,你能够帮他输出用户ID、等级以及统一后的日期吗?(日期格式统一为yyyy-mm-dd)
data["Last_submission_time"]=pd.to_datetime(data["Last_submission_time"],format="%Y-%m-%d")
法(1)print(data[['Nowcoder_ID','Level','Last_submission_time']])
法(2)print(data.iloc[:,[0,1,8]])
14.请你统计2021年12月每天练习题目的数量
函数(groupby的使用和value_counts()的区别 返回值不同)
import pandas as pd
nowcoder = pd.read_csv('nowcoder.csv', parse_dates=True, index_col='date')
a=nowcoder.groupby("date")
print(a.size())
size()函数主要是用来统计矩阵元素个数,或矩阵某一维上的元素个数的函数。
参数
numpy.size(a, axis=None)
a:输入的矩阵
axis:int型的可选参数,指定返回哪一维的元素个数。当没有指定时,返回整个矩阵的元素个数。
例子
a = np.array([[1,2,3],[4,5,6]])
np.size(a)
6
np.size(a,1)
3
np.size(a,0)
2
axis的值没有设定,返回矩阵的元素个数
axis = 0,返回该二维矩阵的行数
axis = 1,返回该二维矩阵的列数
15. 牛牛想要知道牛客网这些刷题用户,每年毕业生中最高的成就值分别是多少?
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
a=Nowcoder.groupby("Graduate_year")
print(a["Achievement_value"].max()) #特殊点【注意括号的类型】
16.运动会各项目报名透视表【 如education部门男性中报名longJump的人数为1人。】
import pandas as pd
signup = pd.read_csv('signup.csv')
items = pd.read_csv('items.csv')
data=pd.merge(signup,items,on="item_id",how="inner")
data1=data.pivot_table(index=["sex","department"],
columns="item_name",
aggfunc={"employee_id":"size"},
fill_value=0)
print(data1)
17.某店铺消费最多的前三名用户
print(sales.sort_values(by="monetary",ascending=False).reset_index(drop=True).head(3))
ascending:排序方式:为默认为TRUE–升序,False–降序
by:通过什么进行排名