Python学习8

简介: Python学习8

大家好,这里是七七,今天来介绍的是数据整理代码


但由于是数据整理代码,因此会有些浅显,看不懂需要解释的地方会很少,重点是处理数据的方法。


代码1


sale_sum=sale_sum.sort_values("销量(千克)",ascending=False)


这行代码将会对上一个命令生成的"sale_sum"变量按照"销量(千克)"这一列进行降序排列。其中,"sort_values"方法用于对数据表按照指定的列进行排序,"ascending=False"表示使用降序排列。


代码2


result_df=pd.concat(
        [result_df,
         pd.DataFrame({'单品编码':[group_name],
                       '最大销量':[max_sale],
                       '最小销量':[min_sale],
                       '平均销量':[mean_sale],})],
        ignore_index=True)


- `pd.concat()` 是 Pandas 中的一个函数,用于将多个数据对象(如 DataFrame 或 Series)进行连接。

- `[result_df, pd.DataFrame({...})]` 是要连接的数据对象,其中 `result_df` 是已有的 DataFrame,`pd.DataFrame({...})` 则是将要添加到 `result_df` 中的新数据。这里用一个列表 `[result_df, pd.DataFrame({...})]` 将两个数据对象传递给了 `pd.concat()`。

- `pd.DataFrame({...})` 中的大括号 {...} 是一个包含新数据的字典。这个字典中键是要添加到 `result_df` 中的新列名,例如 '单品编码'、'最大销量'、'最小销量' 和 '平均销量',值则是相应的数据。

- `ignore_index=True` 表示连接后的 DataFrame 中的行索引将被重置为从零开始,忽略原来的索引。


代码的操作是将一个字典中的四个统计指标 ('单品编码'、'最大销量'、'最小销量'、'平均销量') 构造 DataFrame,并将其与原 DataFrame `result_df` 进行连接,然后将结果重新赋值给 `result_df` 变量。


这个操作可以用来汇总某些数据中的统计结果(如对于某一组数据,其最大、最小和平均值),将其添加到已有的 DataFrame 中,并将多组统计结果合并成一个大的 DataFrame。


pd.concat() 是 Pandas 库中的一个函数,用于将多个数据对象按照指定的轴进行连接。具体用法如下:

pd.concat(objs, axis=0, join='outer', ignore_index=False)


参数说明:


objs:一个包含需要连接的数据对象(DataFrame、Series)的列表或字典。

axis:指定连接的轴,0 表示按行连接,1 表示按列连接。

join:指定连接方式,‘outer’ 表示并集连接,‘inner’ 表示交集连接。

ignore_index:如果为 True,则重置连接后的索引。

pd.concat() 函数返回连接后的结果,可以将其赋值给一个变量进行后续处理。


使用 pd.concat() 函数可以将多个数据对象连接起来,可以是行连接(按照纵向方向堆叠)或列连接(按照横向方向拼接)。连接操作可用于合并多个数据集,扩展数据集的行数或列数,并灵活地控制连接方式等参数。


总代码


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
 
plt.rcParams['font.sans-serif'] = [u'simHei']
plt.rcParams['axes.unicode_minus'] = False
 
sale_data=pd.read_excel("./data/附件2.xlsx")
sale_data["销售日期"]=pd.to_datetime(sale_data["销售日期"])
sale_data=sale_data[["销售日期","单品编码","销量(千克)","销售单价(元/千克)"]]
sale_data=sale_data[sale_data["销售日期"]>="2023-6-24"]
sale_sum=sale_data[["单品编码","销量(千克)"]].groupby("单品编码").sum()
sale_sum=sale_sum.sort_values("销量(千克)",ascending=False)
 
buy_data=pd.read_excel("./data/附件3.xlsx")
buy_data["日期"]=pd.to_datetime(buy_data["日期"])
buy_data=buy_data[buy_data["日期"]>="2023-6-24"]
buy_data=buy_data[["单品编码","批发价格(元/千克)"]].groupby("单品编码").count()
buy_data["单品编码"]=buy_data.index
buy_data=buy_data[["单品编码"]]
buy_data.index=range(1,len(buy_data)+1)
 
data=buy_data.merge(sale_sum,on='单品编码',how="left")
data.dropna(inplace=True)
data=data.sort_values("销量(千克)",ascending=False)
data.index=range(1,len(data)+1)
data=data[data["销量(千克)"]>=2.5]
 
base_info=pd.read_excel("./data/附件1.xlsx")[["单品编码","分类名称","单品名称"]]
data=data.merge(base_info,on="单品编码",how="left")
 
sale_data["总售价"]=sale_data["销量(千克)"]*sale_data["销售单价(元/千克)"]
sale_money=sale_data[["单品编码","总售价"]].groupby("单品编码").sum()
sale_num=sale_data.groupby("单品编码").count().iloc[:,1]
sale_num.name="单数"
 
data=data.merge(sale_money,on="单品编码",how="left")
data["平均单价"]=data["总售价"]/data["销量(千克)"]
 
data=data.merge(sale_num,on="单品编码",how="left")
 
##################################
#VIKOR法
 
#对'Feature2'列进行标准化
data['Feature1']=StandardScaler().fit_transform(data[['销量(千克)']])
data['Feature2']=StandardScaler().fit_transform(data[['单数']])
 
data['F1']=(max(data['Feature1'])-data['Feature1'])/(max(data['Feature1'])-min(data['Feature1']))
data['F2']=(max(data['Feature2'])-data['Feature2'])/(max(data['Feature2'])-min(data['Feature2']))
 
data['S']=data['F1']+data['F2']
data['R']=np.maximum(data['F1'],data['F2'])
 
v=0.5
data['Q']=(v*data['S']-max(data['S'])/(min(data['S'])-max(data['S'])))+((1-v)*(data['R']-max(data['R'])/(min(data['R'])-max(data['R']))))
data=data.drop(['Feature1','Feature2','F1','F2','S','R'],axis=1)
data=data.sort_values("Q",ascending=True)
data['Q']=(max(data['Q'])-data['Q'])/(max(data['Q'])-min(data['Q']))
 
buy_data=pd.read_excel("./data/附件3.xlsx")
buy_data["日期"]=pd.to_datetime(buy_data["日期"])
buy_data=buy_data[buy_data["日期"]>="2023-6-24"]
buy_data=buy_data[['批发价格(元/千克)','单品编码']].groupby("单品编码").mean()
data=data.merge(buy_data,on="单品编码",how="left")
 
print(sale_data)
grouped=sale_data.groupby("单品编码")
result_df=pd.DataFrame(columns=['单品编码','最大销量','最小销量','平均销量'])
for group_name,group_data in grouped:
    max_sale=group_data.groupby("销售日期").sum()["销量(千克)"].max()
    min_sale = group_data.groupby("销售日期").sum()["销量(千克)"].min()
    mean_sale = group_data.groupby("销售日期").sum()["销量(千克)"].mean()
    result_df=pd.concat(
        [result_df,
         pd.DataFrame({'单品编码':[group_name],
                       '最大销量':[max_sale],
                       '最小销量':[min_sale],
                       '平均销量':[mean_sale],})],
        ignore_index=True)
data=data.merge(result_df,on="单品编码",how="left")
 
loss_data=pd.read_excel("./data/附件4.xlsx")
data=data.merge(loss_data,on="单品编码",how="left")
data["损耗率(%)"]=data["损耗率(%)"]/100
 
#######################################
#平均销量修正
data["平均销量"]=data["平均销量"]/(1-data["损耗率(%)"])
 
print(data)
data.to_csv("./q3.csv")
相关文章
|
3月前
|
机器学习/深度学习 前端开发 算法
学习Python需要多久?
【7月更文挑战第6天】学习Python需要多久?
64 5
|
2月前
|
程序员 测试技术 开发工具
豆瓣评分7.9!世界级讲师耗时5年整理出的Python学习手册!
Python是一门流行的开源编程语言,广泛用于各个领域的独立程序与脚本化应用中。它不仅免费、可移植、功能强大,同时相对简单,而且使用起来充满乐趣。从软件业界的任意一角到来的程序员,都会发现Python着眼于开发者的生产效率以及软件质量,因此无论你的项目是大还是小,选择Python都将带来战略性的优势。 今天给小伙伴们分享的这份手册讲述了完整的Python语言,力争满足“语言”和“原理”两个方面的需求,并拥有足够的深度以便实用。废话不多说,下面展示给大家。
|
2月前
|
数据采集 数据可视化 Ruby
GitHub星标破万!Python学习教程(超详细),真的太强了!
Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。 Python 的设计哲学之一就是简单易学,体现在两个方面: 1. 语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。 2. 切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
|
2月前
|
机器学习/深度学习 开发者 Python
Python 与 R 在机器学习入门中的学习曲线差异
【8月更文第6天】在机器学习领域,Python 和 R 是两种非常流行的编程语言。Python 以其简洁的语法和广泛的社区支持著称,而 R 则以其强大的统计功能和数据分析能力受到青睐。本文将探讨这两种语言在机器学习入门阶段的学习曲线差异,并通过构建一个简单的线性回归模型来比较它们的体验。
51 7
|
2月前
|
JSON API 开发者
Python学习Get方式通过商品 ID请求 获取拼多多商品详情数据接口
拼多多商品详情数据接口服务使开发者或商家能编程获取平台商品详情,涵盖标题、价格、销量等关键信息,助力市场分析与决策。使用前需注册开发者账号并获取API密钥;构造含商品ID等参数的请求URL后发送至API服务器;接口以JSON格式返回数据。应用场景包括商品销售分析、选品、品牌口碑挖掘及竞品分析,为商家提供强大数据支持。
|
2月前
|
算法 数据挖掘 大数据
深入学习Python的性能优化
【8月更文挑战第9天】深入学习Python性能优化涵盖设定明确目标、运用timeit与cProfile等工具诊断瓶颈、优化代码结构与算法、采用并行/并发技术、利用生成器与第三方库等策略。这是一个持续学习的过程,旨在全面提升代码效率与响应速度。
31 1
|
3月前
|
机器学习/深度学习 搜索推荐 TensorFlow
使用Python实现深度学习模型:智能教育与个性化学习
【7月更文挑战第29天】 使用Python实现深度学习模型:智能教育与个性化学习
125 9
|
2月前
|
数据采集 人工智能 数据可视化
【2023年电工杯竞赛】B题 人工智能对大学生学习影响的评价 数学建模方案和python代码
本文介绍了2023年电工杯竞赛B题的数学建模方案和Python代码实现,详细阐述了如何分析调查问卷数据,建立评价指标体系,构建数学模型评估人工智能对大学生学习的影响,并提供了数据预处理、特征编码、可视化分析等代码示例。
40 0
【2023年电工杯竞赛】B题 人工智能对大学生学习影响的评价 数学建模方案和python代码
|
2月前
|
存储 JSON 测试技术
Python中最值得学习的第三方JSON库
Python中最值得学习的第三方JSON库
|
2月前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络不再是黑魔法!Python带你一步步拆解,让AI学习看得见
【8月更文挑战第3天】神经网络,曾被视为难以触及的黑魔法,现已在Python的助力下变得平易近人。以TensorFlow或PyTorch为“魔法杖”,仅需几行Python代码即可构建强大的AI模型。从零开始,我们将教导AI识别手写数字,利用经典的MNIST数据集。通过数据加载、预处理至模型训练与评估,每个步骤都如精心编排的舞蹈般清晰可见。随着训练深入,AI逐渐学会辨认每个数字,其学习过程直观展现。这不仅揭示了神经网络的奥秘,更证明了任何人都能借助Python创造AI奇迹,共同探索未来的无限可能。
36 2
下一篇
无影云桌面