• 2023年第四届MathorCup高校数学建模挑战赛——大数据竞赛B题 实现代码


    根据之前发布的思路  第一步 进行数据合并

    1. import pandas as pd
    2. # 读取所有附件的数据
    3. data1 = pd.read_excel('附件一.xlsx')
    4. data2 = pd.read_excel('附件二.xlsx')
    5. data3 = pd.read_excel('附件三.xlsx')
    6. data4 = pd.read_excel('附件四.xlsx')
    7. # 根据商品编码将附件一和附件二连接
    8. combinedData = pd.merge(data1, data2, on='商品编码', how='inner')
    9. # 根据商家编码将上述的结果和附件三连接
    10. combinedData = pd.merge(combinedData, data3, on='商家编码', how='inner')
    11. # 根据仓库编码将上述的结果和附件四连接
    12. combinedData = pd.merge(combinedData, data4, on='仓库编码', how='inner')
    13. # 保存合并后的数据到新的Excel文件中
    14. combinedData.to_excel('合并后的数据.xlsx', index=False, engine='openpyxl')

    或者 matlab

    1. % 读取所有附件的数据
    2. data1 = readtable('附件一.xlsx');
    3. data2 = readtable('附件二.xlsx');
    4. data3 = readtable('附件三.xlsx');
    5. data4 = readtable('附件四.xlsx');
    6. % 根据商品编码将附件一和附件二连接
    7. combinedData = innerjoin(data1, data2, 'Keys', '商品编码');
    8. % 根据商家编码将上述的结果和附件三连接
    9. combinedData = innerjoin(combinedData, data3, 'Keys', '商家编码');
    10. % 根据仓库编码将上述的结果和附件四连接
    11. combinedData = innerjoin(combinedData, data4, 'Keys', '仓库编码');
    12. % 保存合并后的数据到新的Excel文件中
    13. writetable(combinedData, '合并后的数据.xlsx');

    之后就是对于数据的 转码 将文本数据转化为数字

    py代码

    1. # 定义数据
    2. data = {
    3. "商家编码": {"1": "seller_10", "2": "seller_11", "3": "seller_12", "4": "seller_13", ...},
    4. "商品编码": {"1": "product_1914", "2": "product_1915", "3": "product_1916", ...},
    5. "仓库编码": {"1": "wh_1", "2": "wh_10", "3": "wh_11", ...},
    6. "商品一级分类": {"1": "手机通讯", "2": "食品饮料", "3": "家庭清洁/纸品", ...},
    7. "商品二级分类": {"1": "手机配件", "2": "粮油调味", "3": "进口食品", ...},
    8. "商品三级分类": {"1": "手机配件_5", "2": "粮油调味_1", "3": "进口食品_1", ...},
    9. "商家分类": {"1": "手机通讯", "2": "食品饮料", "3": "美妆护肤", ...},
    10. "库存分类": {"1": "A", "2": "B", "3": "D", ...},
    11. "商家规模": {"1": "Large", "2": "Special", "3": "Small", ...},
    12. "仓库类别": {"1": "Large", "2": "Special", "3": "Small", ...}
    13. }
    14. def transcode(record):
    15. for key, value in record.items():
    16. if value in data[key]:
    17. record[key] = data[key][value]
    18. return record
    19. # 示例
    20. record = {
    21. "商家编码": "1",
    22. "商品编码": "2",
    23. "仓库编码": "3",
    24. ...
    25. }
    26. transcoded_record = transcode(record)
    27. print(transcoded_record)

    matalb

    1. % 假设原始数据存储在一个cell array中,名为data
    2. % data = {...}; % 你需要将这里填充为你的数据
    3. % 定义一个map来存储转码信息
    4. map = containers.Map();
    5. % 定义你的转码数据
    6. sellers = {'seller_10', 'seller_11', 'seller_12', 'seller_13', ...};
    7. products = {'product_1914', 'product_1915', 'product_1916', 'product_1917', ...};
    8. warehouses = {'wh_1', 'wh_10', 'wh_11', 'wh_12', ...};
    9. % ... 添加其他数据
    10. % 填充map
    11. for i = 1:length(sellers)
    12. map(sellers{i}) = i;
    13. end
    14. for i = 1:length(products)
    15. map(products{i}) = i;
    16. end
    17. for i = 1:length(warehouses)
    18. map(warehouses{i}) = i;
    19. end
    20. % ... 同样地,为其他数据填充map
    21. % 对原始数据进行转码
    22. rows, cols = size(data);
    23. for r = 1:rows
    24. for c = 1:cols
    25. if isKey(map, data{r, c})
    26. data{r, c} = map(data{r, c});
    27. end
    28. end
    29. end
    30. % 输出转码后的数据
    31. disp(data);

    然后 就可以进行后续分析了

  • 相关阅读:
    JZ63 买卖股票的最好时机(一)
    python医患档案管理系统vue+elementui+django
    一文读懂 Spring Bean 的生命周期
    3dsMax---期末设计[CC‘s 游乐园’]
    全国心力衰竭日| 仿生“人工心脏”——心衰患者的“心”希望
    excel如何查找两张表格共有的名单信息
    友宝在线在港交所上市申请“失效”:连续两年亏损,王滨为大股东
    mysql不是内部或外部命令,也不是可运行的程序或批处理文件解决
    rv1126-rv1109-RkLunch.sh
    解决GDAL 写FileGDB的中文属性字段和字段值乱码。
  • 原文地址:https://blog.csdn.net/qq_33690821/article/details/134087054