牛客网数据挖掘入门题目pandas总结(一)(1-8)

本系列中教学数据挖掘,主要用Python3中pandas的包。

本文主要用于楼主自己总结复习,若是小白想学习,建议还是自己动手操作一下,只看答案代码只是“了解”,远不到“理解”、“运用”等层次,共勉!

本文先总结‘查看数据’、‘数据索引’两部分题目,即DA1-DA8.

牛客网在线编程_编程学习|练习题_数据结构|系统设计题库

题目:

现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):

Nowcoder_ID:用户ID

Level:等级

Achievement_value:成就值

Num_of_exercise:刷题量

Graduate_year:毕业年份

Language:常用语言

Continuous_check_in_days:最近连续签到天数

Number_of_submissions:提交题目数量

Last_submission_time:最后一次提交题目日期

通用导入库、读取文件操作:

Import pandas as pd
data=pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
#pd.read是pandas库中读取csv文件的命令。
#参数 sep=',' 指定了文件中数据的分隔符为逗号;参数"dtype=object"表示读取的数据类型为Python对象类型。比如防止将年份识别成小数
#下题中有些命令不需要设置dtype格式,默认格式才能符合要求。

注意:Nowcoder.csv文件需要在运行路径中,由于楼主是在牛客网进行在线解题,即无需下载到本地,如有读者想在本地环境下复现则需要弄一个csv数据集文件在运行路径。(或去牛客网在线解题)

1.输出该数据集的前6行

print(data.head(6))
#.head()默认展示前5行,如像题目有指定前x行,则在括号中加入x数字即可

1.输出:

2.输出该数据集的行数与列数

print(data.shape)

2.输出:

3.输出该数据集第10行的全部信息,每列信息单独成行

data.iloc[10,:]
#data.loc[10,:]

#.iloc和.loc都是选取data数据中某行某列的操作
#loc函数:通过行索引 “Index” 或者"columns"中的具体值来取行、列数据。
#iloc函数:通过行号或者列号来取行、列数据(如取第二行的数据、取第0列的数据)。
#即iloc的输入量不能是“index”,比如此题中不能输入data.iloc(1,'Level')
#应该是data.loc(1,'Level')或data.iloc(1,1)

#具体用法可参考下面博客

用法参考:pandas中loc和iloc用法_Anneaisun1995的博客-CSDN博客

3.输出:

4.输出该数据集第10行到第20行的常用语言,每行数据单独成行

print(data.loc[[10:20],'Language'])
#loc中行切片索引是左闭右闭,iloc中是左闭右开

4.输出:

5.输出该数据集每列信息是否有为空值

print(data.isna().any())
#可以是any(axis=0) axis=0表示在每个列上应用函数.不指定则默认,也是axis=0


#.isna判断是否为none,如果有空值,则返回true
#any () 函数用于判断给定的可迭代参数 iterable 是否都为 False。
#如果是,any ()操作后的结果返回 False。
#如果给定的可迭代参数 iterable其中有一个为 True,any ()操作后的结果则返回 True。 

5.输出:

6.输出该数据集中语言为Python对应的所有列的信息,包括列号。

data1=data[data['Language']=='Python']
#'字符串'中大小写也要完全一致!不然查找不到
print(data1)

或者笔者一开始用笨方法:

d=[]
for i in range(data.shape[0]):
    if data.loc[i,'Language']=='Python':
        d.append(i)
    else:
        pass
print(data.loc[d,:])


#range(52)表示0到51所有数字。
#数据是第0行到第51行,shape是(52,8),所以不会漏最后一行的检查。

6.输出:

7.输出该数据集中语言为Python对应的成就值这一列的信息,包括列号。

print(data[data['Language']=='Python']['Achievement_value'])

#data['Language']=='Python'表示在data的language列中找到是Python哪些行
#data[data[...]]就表示那些行数据
#在后面加[‘Achievement...’]表示在那些行中表示出Achievement..这一列数据

或者分步写:

data1=data[data['Language']=='Python']
print(data1['Achievement_value'])

7.输出:

8.输出该文件最后5行用户的用户ID、等级、成就值、常用语言等数据,包括行号

print((data.tail(5)).iloc[:,[0,1,2,5]])
#print((data.tail(5)).loc[:,['用户ID','等级','成就值','常用语言'])
#上一行标签懒得打英文了。。

或者:

print(data.iloc[-5:][['Nowcoder_ID', 'Level', 'Achievement_value', 'Language']])

此处感觉有点不太理解iloc列的用法,不知道是不是该用loc,存疑。

输出:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值