牛客网Python篇数据分析习题(四)

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

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

Nowcoder_ID:用户ID

Level:等级

Achievement_value:成就值

Num_of_exercise:刷题量

Graduate_year:毕业年份

Language:常用语言

Continuous_check_in_days:最近连续签到天数

Number_of_submissions:提交代码次数

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

运营同学正在做用户调研,为了保证调研的可靠性,想要去掉那些信息不全的用户,即去掉有缺失数据的行,请你帮助他去掉后输出全部数据。

660ae4e9e9d47440a15fae0a3c4f3cba_5a04028310b74932b5f651e9dbd5c571.png

import pandas as pd
nd = pd.read_csv("Nowcoder.csv", sep=",", dtype=object)
pd.set_option("display.width", 300) 
pd.set_option("display.max_rows", None) 
pd.set_option("display.max_columns", None)
nd.dropna(axis=0, inplace=True)
print(nd)

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

Nowcoder_ID:用户ID

Level:等级

Achievement_value:成就值

Num_of_exercise:刷题量

Graduate_year:毕业年份

Language:常用语言

Continuous_check_in_days:最近连续签到天数

Number_of_submissions:提交代码次数

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

运营同学拿到了这份用户文件,但是由于系统BUG,出现了部分缺失的值,请你使用当前的最大年份填充缺失的毕业年份(“Graduate_year”),用Python填充缺失的常用语言(“Language”),用成就值的均值(四舍五入保留整数)填充缺失的成就值(“Achievement_value”)。

b7e763b343b1be42e74cf80e96d1ce05_8806d994b2094b649a3531b005543431.png

import pandas as pd
nd = 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)
nd["Graduate_year"].fillna(nd["Graduate_year"].max(), inplace=True)
nd["Language"].fillna("Python", inplace=True)
nd["Achievement_value"].fillna(int(nd["Achievement_value"].mean()), inplace=True)
print(nd)

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

Nowcoder_ID:用户ID

Level:等级

Achievement_value:成就值

Num_of_exercise:刷题量

Graduate_year:毕业年份

Language:常用语言

Continuous_check_in_days:最近连续签到天数

Number_of_submissions:提交代码次数

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

牛牛拿到这份文件的时候一脸懵逼,因为系统错误将很多相同用户的数据输出了多条,导致文件中有很多重复的行,请先检查每一行是否重复,然后输出删除重复行后的全部数据。

7bdc1c8a9e4cb430a582447f84c95b31_8e0dbbd0d86b4c75b7ae1e28dcb53242.png

import pandas as pd
nd=pd.read_csv('Nowcoder.csv')
print(nd.duplicated())
print(nd.drop_duplicated(0))

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

Nowcoder_ID:用户ID

Level:等级

Achievement_value:成就值

Num_of_exercise:刷题量

Graduate_year:毕业年份

Language:常用语言

Continuous_check_in_days:最近连续签到天数

Number_of_submissions:提交代码次数

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

运营同学发现最后一次提交题目日期这一列有各种各样的日期格式,这对于他分析用户十分不友好,你能够帮他输出用户ID、等级以及统一后的日期吗?(日期格式统一为yyyy-mm-dd)

af472351c93ad19e66f9c1b9dfea6d0d_dc052a65c0fb4099a553c8c4e5f03f15.png

import pandas as pd
nd = pd.read_csv("Nowcoder.csv", sep=",", dtype=object)
nd["Last_submission_time"] = pd.to_datetime(
    nd["Last_submission_time"], format="%Y-%m-%d")
print(nd[["Nowcoder_ID", "Level", "Last_submission_time"]])

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

Nowcoder_ID:用户ID

Level:等级

Achievement_value:成就值

Graduate_year:毕业年份

Language:常用语言

如果你读入了这个json文件,能将其转换为pandas的DataFrame格式吗?

4b51f75adb089838fd9ad43482d5e8aa_f3f2292983be4e4b87f1def873f49d75.png

import pandas as pd
import json
pd.set_option("display.width", 300)
pd.set_option("display.max_rows", None)
pd.set_option("display.max_columns", None)
with open("Nowcoder.json", "r") as f:
    data = json.loads(f.read())
print(pd.DataFrame(data))

6.现有牛客网12月每天练习题目情况的数据集nowcoder.csv。包含如下字段(字段之间用逗号分隔):

user_id:用户id

question_id:问题编号

result:运行结果

date:练习日期

请你统计2021年12月每天练习题目的数量。

bf75d97a7addabb64443a18c3da16815_1bcc93cf2e3048309bbcc2aa45f67582.png

import pandas as pd
nowcoder = pd.read_csv("nowcoder.csv", parse_dates=True, index_col="date")
nd_num = nowcoder.groupby("date")["question_id"].count()
print(nd_num)

7.现有牛客网12月每天练习题目情况的数据集nowcoder.csv。包含如下字段(字段之间用逗号分隔):

user_id:用户id

question_id:问题编号

result:运行结果

date:练习日期

现需要查看用户在某天练习后第二天还会再来练习的留存情况,请计算用户练习的平均次日留存率。

d55b3796ac98511d37c979678774253e_03eca3d2a6c44cf99b6ae55c74d5ce25.png

import pandas as pd
from datetime import timedelta
df = pd.read_csv("nowcoder.csv", sep=",")
tit_id = df["user_id"].count()
nd = pd.merge(df, df, on="user_id")
nd["date_x"] = pd.to_datetime(nd.date_x).dt.date
nd["date_y"] = pd.to_datetime(nd.date_y).dt.date
nd["differ"] = nd["date_x"] - nd["date_y"]
sum_id = nd[nd.differ == "1 days"]["differ"].count()
res = round(sum_id / tit_id, 2)
print(res)

8.现有牛客网12月每天练习题目的数据集nowcoder.csv。包含如下字段(字段之间用逗号分隔):

user_id:用户id

question_id:问题编号

result:运行结果

date:练习日期

请你统计2021年12月答题结果正确和错误的前提下每天的答题次数。

272a216aa4a4f9ad29e866cf36a47c45_179da4a3abb44a7ab7d82db3c7265078.png

import pandas as pd
df = pd.read_csv("nowcoder.csv")
df.rename(columns={"date": "year-month-day"}, inplace=True)
nd = df.groupby(["result", "year-month-day"])["question_id"].count()
print(nd)
相关文章
|
2天前
|
数据可视化 数据挖掘 Python
Python中数据分析工具Matplotlib
【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title('简单折线图') plt.xlabel('X轴') plt.ylabel('Y轴') plt.show() ```
5 1
|
2天前
|
数据采集 SQL 数据可视化
Python数据分析工具Pandas
【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
4 1
|
4天前
|
Python 数据挖掘 存储
Python 数据分析(PYDA)第三版(七)(4)
Python 数据分析(PYDA)第三版(七)
|
Python Shell 存储
Python 数据分析(PYDA)第三版(七)(3)
Python 数据分析(PYDA)第三版(七)
Python 数据分析(PYDA)第三版(七)(3)
|
机器学习/深度学习 数据可视化 Python
Python 数据分析(PYDA)第三版(六)(2)
Python 数据分析(PYDA)第三版(六)
|
机器学习/深度学习 Python 数据挖掘
Python 数据分析(PYDA)第三版(六)(1)
Python 数据分析(PYDA)第三版(六)
|
4天前
|
Python
[重学Python]Day 2 Python经典案例简单习题6个
[重学Python]Day 2 Python经典案例简单习题6个
12 0
|
4天前
|
Python 数据格式 XML
Python 数据分析(PYDA)第三版(三)(1)
Python 数据分析(PYDA)第三版(三)
|
5月前
|
数据可视化 数据挖掘 Python
【Python】数据分析:matplotlib折线图
【Python】数据分析:matplotlib折线图
55 0
|
7月前
|
机器学习/深度学习 数据采集 数据挖掘
Python 数据分析入门教程:Numpy、Pandas、Matplotlib和Scikit-Learn详解
Python 数据分析入门教程:Numpy、Pandas、Matplotlib和Scikit-Learn详解
141 0

热门文章

最新文章