牛客python题库解题笔记——5小时学python之pandas

一、pandas基本数据

1、查看数据

用户数据记录在文件Nowcoder.csv中,包含如下字段(字段与字段之间以逗号间隔):
Nowcoder_ID,Level,Achievement
获取该文件中每一列的列名,以及该文件包含了多少位用户的数据。数据集直接从当前目录下的Nowcoder.csv文件中读取。

第一行以列表的形式输出文件所有的列名,第二行直接输出总用户数。

import pandas as pd

df = pd.read_csv("Nowcoder.csv", sep=",", dtype=object)
print([column for column in df])
print(df.shape([0]))

2、查看其中一类数据
某线下店铺的销售记录在Order.csv中,包含如下字段(字段与字段之间以逗号间隔):
order_number:订单号
product_type:产品类型,包括phone、pad、watch等
price:价格
time:购买时间
假如店长想要查看手机订单(phone)的全部信息,使用pandas帮他查一下

数据集从当前目录下的Order.csv文件中读取。
输出产品类型为phone的全部信息,包括行号。

import pandas as pd
df = pd.read_csv("Order.csv", sep=",", dtype=object)
phone1 = df.loc[df["product_type"] == "phone"] #或者直接print(df[df["product_type"] == "phone"])
print(phone1)

二、pandas数据筛选

1、数据筛选
一个Nowcoder.csv文件,包含如下字段(字段与字段之间以逗号间隔):
ID:工号;working_years:工龄;level:级别;language:使用语言;salary:工资
需要筛选出使用C语言的资深员工(工龄超过或等于8年)的全部数据。输出数据集中工龄不小于8年的C语言员工的全部信息,包括行号。

import pandas as pd

df = pd.read_csv("Nowcoder.csv", sep=",")
result = df.loc[(df["working_years"] >= 8) & (df["language"] == "C")]
print(result)

2、筛选订单
现有一个Order.csv文件,它记录了某商城近一周的订单销售数据数据,包含如下字段(字段与字段之间以逗号间隔):
order_num:订单号
price:商品价格
date:销售日期
shop_name:店铺名字
想要知道618那天所有销售的店铺及商品价格信息。数据集直接从当前目录下的Order.csv文件中读取。输出该数据集中销售时间为618当天对应的的价格和店铺信息,包括行号。

#导入模块
import pandas as pd
#读取文件
a = pd.read_csv('Order.csv',sep=',',dtype=object)
#输出列a[['price','shop_name']],再将时间作为条件[a.date == '2022/6/18'],添加到后面 
s = a[['price','shop_name']][a.date == '2022/6/18']
#输出结果
print(s)

3、快递信息
现有一个Nowcoder.csv文件,记录了某个快递站点近期寄送的快递信息,包含如下字段(字段与字段之间以逗号间隔):
order_num:订单号
Postage:运费
Date:寄送日期
Destination:目的地
phone_tail_number:手机尾号
Type:快递类型
网点人员想知道618当天快递类型为1的快递都送往了哪些地方。数据集直接从当前目录下的Nowcoder.csv文件中读取。输出该数据集中日期为2022/6/18且类型为1的快递的目的地信息,包括行号。

#导入模块
import pandas as pd
#读取文件
df = pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
#读取列名df['Destination'],将多个条件(df.Date == '2022/6/18')& (df.Type == '1')当作参放在后面
s = df['Destination'][(df.Date == '2022/6/18')& (df.Type == '1')]
#输出
print(s)

三、pandas数学函数

1、统计销售额
现有一个Order.csv文件,它记录了某商城近一周的订单销售数据数据,包含如下字段(字段与字段之间以逗号间隔):
order_num:订单号
price:商品价格
date:销售日期
shop_name:店铺名字
618已过,数据分析员开始统计销售额,找出这个文件中618当天的销售总额以及整个618一周内各个店铺的销售订单数。
数据集直接从当前目录下的Order.csv文件中读取。第一行直接输出618当天销售的价格之和。后续输出每个店铺各自的订单数。

import pandas as pd
df = pd.read_csv("Order.csv", sep=",")
print(sum(df[df["date"] == "2022/6/18"]["price"]))
print(df["shop_name"].value_counts())

2、用户数据分析
现有一个Tk.csv文件,记录了短视频平台部分用户的数据,包含如下字段(字段与字段之间以逗号间隔):
ID:账号
Follows:关注人数
Fans:粉丝数
Cost:商城消费总金额
Days:最近一月活跃天数
Number_of_vedios:发布视频数
想要知道这些用户中最近一月活跃天数的中位数是哪个?最多的粉丝数有多少?最近一月有活跃的人中消费的平均水平是多少?

数据集直接从当前目录下的Tk.csv文件中读取。分三行直接输出三个数据,依次是最近一月活跃天数的中位数(不用处理小数位)、最多粉丝数(保留整数)、最近一月有活跃的人中消费的平均值(保留2位小数)。

import pandas as pd
df = pd.read_csv("Tk.csv", sep=",")
print(df["Days"].median())
print(df["Fans"].max())
print(round(df[df.Days > 0]["Cost"].mean(), 2))

四、pandas分组合并

1、不同等级会员的购买力

现有一个Order.csv文件,记录了某线上商城近一周的订单销售数据数据,包含如下字段(字段与字段之间以逗号间隔):
order_num:订单号
price:商品价格
date:销售日期
shop_name:店铺名字
VIP_level:会员等级
618一周之内到处都有促销,各类会员都展现了自己的购买力,现在请统计一下不同等级的会员平均购买了多少钱的东西,以及不同等级的会员都光顾了多少家不同的店铺。

数据集直接从当前目录下的Order.csv文件中读取。首先输出各个等级的会员都平均消费了多少,不用处理小数位保留。然后输出各个等级的会员光顾了多少家不同的店铺数量。

import pandas as pd
data = pd.read_csv("./Order.csv", dtype=object)
e = data.groupby("VIP_level")# 按照VIP等级分组
print(e.price.mean())# 输出每个VIP等级的消费均值
print(e.shop_name.nunique())# 输出每个VIP等级去过的不同店个数

2、数据关联
现有一个Tk.csv文件,记录了某短视频部分用户的基本信息,包含如下字段(字段与字段之间以逗号间隔):
ID:账号
Follows:关注人数
Fans:粉丝数
Cost:总消费金额
Days:最近一月活跃天数
Number_of_vedios:上传视频数量
另外一个Shop.csv文件记录了用户在平台商城的消费情况,包含如下字段(字段与字段之间以逗号间隔):
ID:账号
order_num:订单号
price:售出商品价格
date:销售日期
shop_name:店铺名称
VIP_level:用户会员等级

分析短视频用户消费行为,需要统计粉丝数大于10000的用户都消费了哪些店铺时,该如何输出?(同一用户两个ID相同)数据集直接从当前目录下的Tk.csv文件和Shop.csv中读取。输出粉丝数大于10000的用户消费过的店铺,输出包括行号。

import pandas as pd
df_tk = pd.read_csv('Tk.csv', sep=',')
df_shop = pd.read_csv('Shop.csv', sep=',')
df = df_tk.merge(df_shop)
print(df[df['Fans']>10000]['shop_name'])

五、pandas清洗与排序

1、清洗——去除空值
现有一个Shop.csv文件,它记录了某个店铺网上销售记录,包含如下字段(字段与字段之间以逗号间隔):
order_num:订单号
payment:实际付款金额
date:订单日期
VIP_level:用户会员等级
因为是网上在线销售,有些时候用户没有付款但也没有取消订单,导致订单过期,实际付款金额显示为空值,这样的数据非常不便于财务统计销售金额信息,需要去掉所有含有空值的行。

数据集直接从当前目录下的Shop.csv文件中读取。
输出清洗后的完整数据集,包括原始行号。

import pandas as pd
a=pd.read_csv('Shop.csv',sep=',')
print(a.dropna())

2、排序
现有一个Order.csv文件,它记录了双十一某些店铺的订单数据,包含如下字段(字段与字段之间以逗号间隔):
order_num:订单号
price:成交价格
shop_name:店铺名字
VIP_level:用户会员等级
想知道哪家店铺是双十一的销冠,需要将所有店铺的名字按照总销售额从高到低排序。

数据集直接从当前目录下的Order.csv文件中读取。
输出店铺的名字及各自的总销售额,按照销售额排序。

import pandas as pd

a = pd.read_csv("Order.csv", sep=",")
ab = a.groupby(by="shop_name").price.agg(["sum"])
print(ab.sort_values(by="sum", ascending=False))
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Turbo正则

如果对您有用请我喝杯咖啡吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值