数据分析2023

##数据分析-python

##输出该数据集的行数与列数
import pandas as pd
data1=pd.read_csv(“Nowcoder.csv”,dtype=object,header=0)
print(data1.shape)

##输出该数据集第10行的全部信息,每列信息单独成行
import pandas as pd
data1=pd.read_csv(“Nowcoder.csv”,dtype=object)
print(data1.loc[10,:])

##输出该数据集第10行到第20行的常用语言,每行数据单独成行
import pandas as pd
data1=pd.read_csv(“Nowcoder.csv”,dtype=object)
data2=data1[‘Language’]
print(data2.loc[10:21])

##输出该数据集每列信息是否有为空值
import pandas as pd
data1=pd.read_csv(“Nowcoder.csv”,dtype=object)
print(data1.isnull().any(axis=0))

##输出该数据集中语言为Python对应的所有列的信息
import pandas as pd
data1=pd.read_csv(“Nowcoder.csv”,dtype=object) ##dtype=object前面似乎说是防止将日期解析为小数
print(data1[data1[“Language”]==‘Python’])

##输出该数据集中语言为Python对应的成就值这一列的信息
import pandas as pd
data1=pd.read_csv(“Nowcoder.csv”,dtype=object)
print(data1[data1[“Language”]==‘Python’][‘Achievement_value’])

##该文件最后5行用户的用户ID、等级、成就值、常用语言等数据
import pandas as pd
data1=pd.read_csv(“Nowcoder.csv”)
print(data1.loc[-5:,[“Nowcoder_ID”,“Level”,“Achievement_value”,“Language”]])

##输出该数据集中语言为Java且毕业年份为2020的对应的所有列的信息
import pandas as pd
data1=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(data1[(data1[‘Language’] == ‘Java’) & (data1[“Graduate_year”] == 2020)])
##需要所有信息,设置宽度,就不会被省略掉

##输出该数据集中语言为CPP、C、C#对应的所有列的信息
import pandas as pd
df=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(df[df[‘Language’].isin([‘CPP’,‘C’,‘C#’])])

##输出该数据集中刷题量不低于500对应的等级与成就值这一列的信息
import pandas as pd
df=pd.read_csv(‘Nowcoder.csv’,sep=’,’)
print(df[df.Num_of_exercise>=500][[‘Level’,‘Achievement_value’]])

##输出该数据集中满足筛选条件的全部信息
import pandas as pd
data1=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(data1[(data1[‘Language’] == ‘CPP’) & (data1[“Graduate_year”] != 2018)& (data1[“Level”] == 7)])

##输出该数据集中常用语言所在列各种不同语言出现的次数
import pandas as pd
data = pd.read_csv(‘Nowcoder.csv’,sep =’,’)
print(data.Language.value_counts())

##直接输出最长与最短签到天数的两个数字,数字之间换行
import pandas as pd
Nowcoder=pd.read_csv(‘Nowcoder.csv’,sep=’,’)
print(Nowcoder[‘Continuous_check_in_days’].max())
print(Nowcoder[‘Continuous_check_in_days’].min())

##直接输出计算的平均数,直接输出,保留一位小数
import pandas as pd
data = pd.read_csv(‘Nowcoder.csv’,sep =’,’)
print(round(data[data.Language==‘Python’][‘Number_of_submissions’].mean(),1))

##直接输出计算的中位数,输出类型为整型Int
import pandas as pd
df=pd.read_csv(‘Nowcoder.csv’,sep=’,’)
df1=df[df[‘Num_of_exercise’]>=10]
print(int(df1[‘Level’].median()))

##你想知道这个文件中记录了多少种常用语言,一并输出这些语言的名字
import pandas as pd
Nowcoder=pd.read_csv(‘Nowcoder.csv’,sep=’,’)
print(Nowcoder[‘Language’].nunique())
print(Nowcoder[‘Language’].unpque().tolist())

##对于牛客网的等级制度,你很感兴趣,你想知道大部分人都在什么等级,你能找到文件中等级的众数吗?
import pandas as pd
df = pd.read_csv(‘Nowcoder.csv’, sep = ‘,’)
print(pd.DataFrame(df[‘Level’].mode()))

##现要分析牛客网用户的活跃情况,请依次输出用户成就值与最近连续签到天数的四分之一分位数以及刷题量与代码提交次数的四分之三分位数
import pandas as pd
df = pd.read_csv(‘Nowcoder.csv’, sep = ‘,’)
print(df[[‘Achievement_value’,‘Continuous_check_in_days’]].quantile(q=0.25))
print(’\n’)
print(df[[‘Num_of_exercise’,‘Number_of_submissions’]].quantile(q=0.75))

##牛客网有很多7级红名大佬,这是众所周知的,但是小白想知道这些大佬的成就值之间有没有什么不同,于是他想从这份文件中输出7级用户中最高成就值与最低成就值之差
import pandas as pd
Nowcoder = pd.read_csv(‘Nowcoder.csv’, sep=’,’)
maxa = Nowcoder[Nowcoder[‘Level’]== 7][‘Achievement_value’].max()
mina = Nowcoder[Nowcoder[‘Level’] == 7][‘Achievement_value’].min()
print(maxa-mina)

##假如牛牛正在统计用户的刷题情况,需要知道用户刷题量的方差以及提交代码次数的标准差
import pandas as pd
data = pd.read_csv(‘Nowcoder.csv’)
print((data.Num_of_exercise.var()).round(2))
print(data.loc[‘Number_of_submissions’].std().round(2))

##牛客网有很多7级红名大佬这是众所周知的,小白希望知道这些大佬的成就值各自占据了所有人成就值总和的百分之多少
import pandas as pd
Nowcoder = pd.read_csv(‘Nowcoder.csv’, sep=’,’)
a=Nowcoder[Nowcoder[‘Level’]==7][‘Achievement_value’]
per=a/Nowcoder[‘Achievement_value’].sum()
print(per)

##牛客网最高的正确率能有多少,为了公平起见,他决定只统计刷题数量大于10题的用户
import pandas as pd
Nowcoder = pd.read_csv(‘Nowcoder.csv’, sep=’,’)
a = Nowcoder[‘Num_of_exercise’][Nowcoder[‘Num_of_exercise’] > 10]
b = Nowcoder[‘Number_of_submissions’][Nowcoder[‘Num_of_exercise’] > 10]
print(round((a/b).max(), 3))

##想要统计这些用户的名字长度
import pandas as pd
nw = pd.read_csv(’./Nowcoder.csv’,sep = ‘,’)
nw1 = nw[‘Name’]
print(nw1.str.len())

##去掉有缺失数据的行
import pandas as pd
Nowcoder = 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)
Nowcoder.dropna(axis=0,inplace=True)
print(Nowcoder)

##使用当前的最大年份填充缺失的毕业年份(“Graduate_year”),用Python填充缺失的常用语言(“Language”),用成就值的均值(四舍五入保留整数)填充缺失的成就值(“Achievement_value”)
import pandas as pd
df=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)
df[‘Graduate_year’].fillna(df[‘Graduate_year’].max(),inplace=True)
df[‘Language’].fillna(‘Python’,inplace=True)
df[‘Achievement_value’].fillna(int(df[‘Achievement_value’].mean()),inplace=True)
print(df)

##检查每一行是否重复,然后输出删除重复行后的全部数据
import pandas as pd
df=pd.read_csv(‘Nowcoder.csv’)
print(df.duplicated())
print(df.drop_duplicated(0))

##统一日期各种各样的日期格式
import pandas as pd
import time
Nowcoder = pd.read_csv(‘Nowcoder.csv’, sep=’,’, dtype=object)
Nowcoder[‘Last_submission_time’] = pd.to_datetime(Nowcoder[‘Last_submission_time’],format=’%Y-%m-%d’)
print(Nowcoder[[‘Nowcoder_ID’,‘Level’,‘Last_submission_time’]])

##读入了这个json文件,能将其转换为pandas的DataFrame格式
import pandas as pd
df = pd.read_json(‘Nowcoder.json’,dtype=dict)
pd.set_option(‘display.width’,300)
pd.set_option(‘display.max_rows’,None)
pd.set_option(‘display.max_columns’,None)
print(pd.DataFrame(df))

##统计2021年12月每天练习题目的数量
import pandas as pd
nowcoder = pd.read_csv(‘nowcoder.csv’, parse_dates=True, index_col=‘date’)
print(nowcoder.groupby(‘date’)[‘question_id’].count())

##某天练习后第二天还会再来练习的留存情况,请计算用户练习的平均次日留存率
import pandas as pd
from datetime import timedelta
nowcoder = pd.read_csv(‘nowcoder.csv’)
n = nowcoder[‘user_id’].count()
b = pd.merge(nowcoder,nowcoder,on = ‘user_id’)
b[‘date_x’]=pd.to_datetime(b.date_x).dt.date
b[‘date_y’]=pd.to_datetime(b.date_y).dt.date
b[‘differ’]=b.date_y-b.date_x
num = b[b.differ == ‘1 days’].differ.count()
rate = round(num/n,2)
print(rate)

##统计2021年12月答题结果正确和错误的前提下每天的答题次数
import pandas as pd
from datetime import datetime
nowcoder = pd.read_csv(‘nowcoder.csv’)
nowcoder.rename(columns={‘date’:‘year-month-day’},inplace=True)
print(nowcoder.groupby(by=[‘result’,‘year-month-day’])[‘question_id’].count())

##统计答对和答错的总数分别是多少
import pandas as pd
import datetime as dt
Nowcoder = pd.read_csv(‘nowcoder.csv’)
print(Nowcoder.groupby(“result”)[‘user_id’].count())

##2021年12月连续练习题目3天及以上的所有用户
import pandas as pd
from datetime import timedelta
nowcoder = pd.read_csv(‘nowcoder.csv’)
df = nowcoder.groupby(‘user_id’)[“user_id”].count()
df = df[df>=3]
print(df)

##刷题用户,每年毕业生中最高的成就值分别是多少
import pandas as pd
import datetime as dt
Nowcoder = pd.read_csv(‘Nowcoder.csv’)
print(Nowcoder.groupby(‘Graduate_year’)[‘Achievement_value’].max())

##是不同等级的用户中各类语言的使用分别有多少人
import pandas as pd
nowcoder=pd.read_csv(‘Nowcoder.csv’)
print(nowcoder.groupby([‘Level’,‘Language’])[‘Nowcoder_ID’].count())

##人数大于5的条件下,各个等级都分别有多少人
import pandas as pd
df = pd.read_csv(‘Nowcoder.csv’,sep=’,’)
print(df.groupby(‘Level’).Nowcoder_ID.count() > 5)

##各类型项目的报名人数
import pandas as pd
items=pd.read_csv(‘items.csv’)
signup=pd.read_csv(‘signup.csv’)
data=pd.merge(items,signup,on=‘item_id’,how=‘outer’)
data=data.groupby(‘item_name’)[‘employee_id’].count()
print(data[data>0])

##统计各类型项目的报名人数
import pandas as pd
items = pd.read_csv(“items.csv”)
signup = pd.read_csv(“signup.csv”)
data = pd.merge(signup, items, how=“left”, on=“item_id”)
print(data.groupby([“item_name”]).employee_id.count())

##signup.csv与signup1.csv的数据集合并后,统计各类型项目的报名人数
import pandas as pd
items = pd.read_csv(“items.csv”)
signup = pd.read_csv(“signup.csv”)
signup1 = pd.read_csv(“signup1.csv”)
signup_all=pd.concat([signup,signup1])
data = pd.merge(items, signup_all, how=“inner”, on=“item_id”)
df=data.groupby(‘item_name’)[‘employee_id’].count()
print(df)

##统计职能部门(functional)中报名标枪(javenlin)的所有员工的员工编号(employee_id)、姓名(name)及性别(sex)
import pandas as pd
signup = pd.read_csv(‘signup.csv’)
items = pd.read_csv(‘items.csv’)
signup1 = signup[signup[‘department’] == ‘functional’]
items1 = items[items[‘item_name’] == ‘javelin’]
total_data = pd.merge(signup1,items1,how=‘inner’,on=‘item_id’)
print(total_data.loc[:,[‘employee_id’,‘name’,‘sex’]])

##报名的各个项目情况(不包含没人报名的项目)对应的透视表
import pandas as pd
item = pd.read_csv(‘items.csv’,sep=’,’)
sign = pd.read_csv(‘signup.csv’,sep=’,’)
data = pd.merge(item,sign,how=‘inner’,on=‘item_id’)
consit = data.groupby([‘sex’,‘department’,‘item_name’])[[‘employee_id’]].count()
print(consit.unstack().fillna(0).astype(‘int8’))

##两张表分开查看对于运营同学太困难了,请帮助他通过用户ID将两张表合并输出
import pandas as pd
df1 = pd.read_csv(“Nowcoder1.csv”)
df2 = pd.read_csv(“Nowcoder2.csv”)
df = df1.merge(df2, on=“Nowcoder_ID”, how=“inner”)
print(df.to_string())

##想要的信息各自在两个csv文件中,你该怎么输出?同时输出用户的名字、刷题量和代码提交次数
import pandas as pd
Nowcoder1 = pd.read_csv(‘Nowcoder1.csv’, sep=’,’)
Nowcoder2 = pd.read_csv(‘Nowcoder2.csv’, sep=’,’)
df=pd.merge(Nowcoder1, Nowcoder2, on=‘Nowcoder_ID’, how=‘inner’)
print(df[[‘Name’,‘Num_of_exercise’,‘Number_of_submissions’]])

##统计消费金额最多的前3名用户
import pandas as pd
sales = pd.read_csv(‘sales.csv’)
data = sales.sort_values(by=‘monetary’, ascending=False).reset_index(drop=True).head(3)
print(data)

##按照1-7级的递增序查看这些用户数据
import pandas as pd
df = pd.read_csv(“Nowcoder.csv”).sort_values(“Level”)
print(df.to_string())

##分别对每个用户的每个消费特征进行评分
import pandas as pd
sales = pd.read_csv(‘sales.csv’)
sales[‘R_Quartile’] = pd.qcut(sales[‘recency’], [0, 0.25, 0.5, 0.75, 1],[“4”, “3”, “2”, “1”]).astype(“int”)
sales[‘F_Quartile’] = pd.qcut(sales[‘frequency’], [0, 0.25, 0.5, 0.75, 1],[“1”, “2”, “3”, “4”]).astype(“int”)
sales[‘M_Quartile’] = pd.qcut(sales[‘monetary’], [0, 0.25, 0.5, 0.75, 1],[“1”, “2”, “3”, “4”]).astype(“int”)
print(sales.head())

##统计最有价值的用户中消费金额最多的前5名用户
import pandas as pd
sales = pd.read_csv(‘sales.csv’)
sales[‘R_Quartile’] = pd.qcut(sales[‘recency’],[0,0.25,0.5,0.75,1],[‘4’,‘3’,‘2’,‘1’]).astype(‘str’)
sales[‘F_Quartile’] = pd.qcut(sales[‘frequency’],[0,0.25,0.5,0.75,1],[‘1’,‘2’,‘3’,‘4’]).astype(‘str’)
sales[‘M_Quartile’] = pd.qcut(sales[‘monetary’],[0,0.25,0.5,0.75,1],[‘1’,‘2’,‘3’,‘4’]).astype(‘str’)
sales[‘RFMClass’] = sales[‘R_Quartile’] + sales[‘F_Quartile’] + sales[‘M_Quartile’]
print(sales[[‘user_id’,‘recency’,‘frequency’,‘monetary’,‘RFMClass’]].head())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值