【Nowcoder牛客刷题记录】——Python数据分析(一)

举报
Lingxw_w 发表于 2023/04/26 22:07:38 2023/04/26
【摘要】 ​目录一、查看数据DA1 用pandas查看牛客网用户数据DA2 牛客网用户数据集的大小DA3 牛客网的第10位用户DA4 统计牛客网部分用户使用语言二、数据索引 DA5 牛客网用户没有补全的信息DA6 查看牛客网哪些用户使用Python  DA7 牛客网Python用户的成就值DA8 文件最后用户的部分数据三、逻辑运算DA9 2020年毕业的人中最喜欢用Java的用户 DA9 牛客网C系用...

目录

一、查看数据

DA1 用pandas查看牛客网用户数据

DA2 牛客网用户数据集的大小

DA3 牛客网的第10位用户

DA4 统计牛客网部分用户使用语言

二、数据索引 

DA5 牛客网用户没有补全的信息

DA6 查看牛客网哪些用户使用Python 

 DA7 牛客网Python用户的成就值

DA8 文件最后用户的部分数据

三、逻辑运算

DA9 2020年毕业的人中最喜欢用Java的用户

 DA9 牛客网C系用户们的信息

DA10 统计牛客网刷题数量500以上的大佬

 DA11 按照毕业年份与使用语言筛选牛客网7级用户

四、中级函数

DA12 牛客网不同语言使用人数

DA13 牛客网用户最近的最长与最短连续签到天数

DA14 Python用户的平均提交次数 

DA15 牛客网用户等级的中位数

DA16 用户常用语言有多少

DA17 牛客网最多的用户等级

DA18 用分位数分析牛客网用户活动

DA19 牛客网大佬之间的差距

DA20 牛客用户刷题量的方差与提交次数的标准差

 DA21 大佬用户成就值比例

DA22 牛客网用户最高的正确率

DA23 统计牛客网用户的名字长度


一、查看数据

DA1 用pandas查看牛客网用户数据

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
print(Nowcoder.head(6))

打开文件时需要添加dtype=object,防止年份信息读取为小数。 

DA2 牛客网用户数据集的大小

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
print(Nowcoder.shape)

DA3 牛客网的第10位用户

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
print(Nowcoder.loc[10])
  • loc :  Selection by Label ,按标签取数据, loc[行索引,列名/column]  (如果第二个参数的个数是全部即 : ,可以省略不写)。

例:

print(df.loc[1,'name'])    # 索引1(行),名为‘name’的列
  • iloc :  Selection by Position,即按位置选择只接受整型参数。不接受列字段名称作为参数,只支持列字段的位置索引作为参数。iloc[行索引,列索引](没有逗号及以后就是默认列为所有列)

例:

print(df.iloc[1,0])   # 第2行第1列的值

DA4 统计牛客网部分用户使用语言

import pandas as pd
Nowcoder =pd.read_csv('Nowcoder.csv')
print(Nowcoder.loc[10:20, 'Language'])

二、数据索引 

DA5 牛客网用户没有补全的信息

import pandas as pd

Nowcoder = pd.read_csv("Nowcoder.csv", sep=",", dtype=object)
print(Nowcoder.isna().any())

# Python中 any () 函数的基本使用 :any () 函数用于判断给定的可迭代参数 iterable 是否都为 False,如果是,any ()操作后的结果返回 False,如果给定的可迭代参数 iterable其中有一个为 True,any ()操作后的结果则返回 True。 
# axis=0:方向沿着列;axis=1方向沿着行

DA6 查看牛客网哪些用户使用Python 

import pandas as pd

Nowcoder = pd.read_csv("Nowcoder.csv", sep=",", dtype=object)
print(Nowcoder[Nowcoder["Language"] == "Python"])

 DA7 牛客网Python用户的成就值

import pandas as pd

Nowcoder = pd.read_csv("Nowcoder.csv", sep=",")
print(Nowcoder[Nowcoder["Language"] == "Python"]["Achievement_value"])

# print(Nowcoder.query('Language=="Python"')['Achievement_value'])

# print(Nowcoder.query('Language=="Python"').Achievement_value)

DA8 文件最后用户的部分数据

import pandas as pd

Nowcoder = pd.read_csv("Nowcoder.csv", sep=",")
a = Nowcoder.tail(5)
print(a[["Nowcoder_ID", "Level", "Achievement_value", "Language"]])

三、逻辑运算

DA9 2020年毕业的人中最喜欢用Java的用户

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['Graduate_year']==2020)&(Nowcoder['Language']=='Java')])

 DA9 牛客网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#"])])
# isin()函数:用来清洗数据,删选过滤掉Dateframe中的一些行,直接用返回的是bool值,然后放入Nowcoder[  {内容} ]中,则返回返回为True的数据行


# print(Nowcoder.query("Language == 'CPP' or Language == 'C'"))
# query()函数查找Languague列中的CPP、C

DA10 统计牛客网刷题数量500以上的大佬

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',')
Nowcoder = Nowcoder[['Level','Achievement_value']]
print(Nowcoder[Nowcoder['Achievement_value']>=500])

 DA11 按照毕业年份与使用语言筛选牛客网7级用户

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.query("Level==7 and Language=='CPP' and Graduate_year!=2018"))

四、中级函数

DA12 牛客网不同语言使用人数

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')

print(Nowcoder['Language'].value_counts())

DA13 牛客网用户最近的最长与最短连续签到天数

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')

# 最长
day_max = Nowcoder['Continuous_check_in_days'].max()
# 最短
day_min = Nowcoder['Continuous_check_in_days'].min()

print(day_max, '\n', day_min)

DA14 Python用户的平均提交次数 

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')

print((Nowcoder.query("Language == 'Python'")['Number_of_submissions'].mean().round(1)))

DA15 牛客网用户等级的中位数

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
print(int(Nowcoder[Nowcoder['Num_of_exercise']>=10]['Level'].median()))

DA16 用户常用语言有多少

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
# unique()方法返回的是去重之后的不同值,而nunique()方法则直接放回不同值的个数
print(Nowcoder.Language.nunique())
print(Nowcoder.Language.tolist())

DA17 牛客网最多的用户等级

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')

print(pd.DataFrame(Nowcoder['Level'].mode(), columns=['Level']))

DA18 用分位数分析牛客网用户活动

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')

print(Nowcoder[['Achievement_value', 'Continuous_check_in_days']].quantile(q=0.25))

print(Nowcoder[['Num_of_exercise', 'Number_of_submissions']].quantile(q=0.75))

DA19 牛客网大佬之间的差距

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
a=Nowcoder[Nowcoder['Level']==7]['Achievement_value'].max()
b=Nowcoder[Nowcoder['Level']==7]['Achievement_value'].min()
print(int(a-b))

DA20 牛客用户刷题量的方差与提交次数的标准差

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')

# 用户刷题量的方差
A = Nowcoder['Num_of_exercise'].var()
print('%.2f'%A)
# 提交代码次数的标准差
B = Nowcoder.iloc[:,7].std()
print('%.2f'%B)

'''
# pandas 中的 var 函数可以得到样本方差(注意不是总体方差)
# std 函数可以得到样本标准差,若要得到某一行或某一列的方差,则也可用 iloc 选取某行或某列,后面再跟 var 函数或 std 函数即可
df.var()            # 显示每一列的方差
df.var(axis = 1)    # 显示每一行的方差
df.std()            # 显示每一列的标准差
df.std(axis = 1)    # 显示每一行的标准差
df.iloc[0, :].std() # 显示第 1 行的标准差
df.iloc[:, 2].std() # 显示第 3 列的标准差
'''

 DA21 大佬用户成就值比例

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
nc=Nowcoder.loc[Nowcoder['Level']==7]
print(nc['Achievement_value']/Nowcoder['Achievement_value'].sum())

DA22 牛客网用户最高的正确率

import pandas as pd

Nowcoder = pd.read_csv("Nowcoder.csv")
n1 = Nowcoder[Nowcoder["Num_of_exercise"] > 10]
n2 = n1.Num_of_exercise / n1.Number_of_submissions
print(n2.max().round(3))

DA23 统计牛客网用户的名字长度

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')

print(Nowcoder['Name'].apply(lambda x : len(x)))

# print(df['Name'].str.len())


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。