数据分析代码
代码一:
一、导入库和设置中文字体
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['simHei']
plt.rcParams['axes.unicode_minus'] = False
这段代码导入了pandas
库和matplotlib.pyplot
模块,并设置了中文字体为simHei
,同时解决了负号显示问题。
二、读取数据
df_1 = pd.read_excel('附件1.xlsx')
df_3 = pd.read_excel('附件3.xlsx')
print(df_1)
print(df_3)
这里分别从两个 Excel 文件中读取数据到df_1
和df_3
两个DataFrame
对象,并打印出来以便查看数据的初步情况。
三、处理日期数据
df_3['日期'] = pd.to_datetime(df_3['日期'])
df_3['月份'] = df_3['日期'].dt.month
print(df_3)
将df_3
中的日期
列转换为datetime
类型,然后提取出月份信息并存入新的月份
列,并再次打印df_3
以查看结果。
四、添加品类信息
mapping_dict = df_1.set_index('单品编码')['分类名称'].to_dict()
df_3['品类'] = df_3['单品编码'].map(mapping_dict)
print(df_3.head(5))
使用df_1
创建一个字典mapping_dict
,将df_1
中的单品编码
作为索引,分类名称
作为值。然后通过map
方法将df_3
中的单品编码
映射为对应的分类名称
,并添加为新的品类
列。最后打印df_3
的前 5 行以查看结果。
五、分析单品编码出现的季节信息
grouped = df_3.groupby('单品编码')
result = {}
for name, group in grouped:
unique_months = group['月份'].unique()
total_months = len(unique_months)
season = []
season_list = [0]*4
# 根据月份判断所属季节并更新相关信息
if 3 in unique_months or 4 in unique_months or 5 in unique_months:
season.append(" 春季")
season_list[0] = 1
if 6 in unique_months or 7 in unique_months or 8 in unique_months:
season.append(" 夏季")
season_list[1] = 1
if 9 in unique_months or 10 in unique_months or 11 in unique_months:
season.append(" 秋季")
season_list[2] = 1
if 12 in unique_months or 1 in unique_months or 2 in unique_months:
season.append(" 冬季")
season_list[3] = 1
result[name] = {
'出现的月份': unique_months,
'总共出现的月份数': total_months,
'出现的季节': season,
"季节数": len(season),
"季节列表": season_list
}
首先对df_3
按照单品编码
进行分组,然后遍历每个分组,确定每个单品编码出现的月份和对应的季节信息,将结果存储在一个字典result
中。
六、统计出现所有季节的单品编码数量
count_all = 0
count_all_list = []
for key, value in result.items():
if value['季节数'] == 4:
count_all += 1
count_all_list.append(key)
print(count_all)
print(count_all_list)
遍历前面得到的结果字典result
,统计出现所有四个季节的单品编码数量,并将这些单品编码存储在一个列表中,最后打印出数量和列表。
七、分析单品编码一年中出现的天数分布
df_3['年份'] = df_3['日期'].dt.year
result = df_3.groupby(['单品编码', '年份']).agg({'日期': 'nunique'}).reset_index()
result.rename(columns={'日期': '天数'}, inplace=True)
max_days = result.groupby('单品编码')['天数'].max().reset_index()
plt.hist(max_days['天数'], bins=35, edgecolor='k')
plt.xlabel('天数')
plt.ylabel(' 频 数 ')
plt.title('天数分布直方图')
plt.show()
filtered_df = max_days[max_days['天数'] <= 15]
cnt = 0
cnt_list = []
for index, row in filtered_df.iterrows():
cnt_list.append(row['单品编码'])
print(f" 单品编码:{row['单品编码']},一年最多出现{row['天数']}天")
cnt += 1
print(cnt)
首先在df_3
中添加年份
列,然后统计每个单品编码在每年中不同日期的数量(天数),接着找出每个单品编码在所有年份中出现的最大天数,绘制天数分布直方图,并筛选出一年中出现天数不超过 15 天的单品编码,统计数量并打印相关信息。
完整代码:
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['simHei']
plt.rcParams['axes.unicode_minus'] = False
#%%
df_1=pd.read_excel('附件1.xlsx')
df_3=pd.read_excel('附件3.xlsx')
print(df_1)
print(df_3)
#%%
df_3['日期'] = pd.to_datetime(df_3['日期'])
df_3['月份'] = df_3['日期'].dt.month
print(df_3)
# 分品类
mapping_dict = df_1.set_index('单品编码')['分类名称'].to_dict()
df_3['品类'] = df_3['单品编码'].map(mapping_dict)
print(df_3.head(5))
#%%
grouped = df_3.groupby('单品编码')
result = {}
print(grouped)
#%%
for name, group in grouped:
unique_months = group['月份'].unique()
total_months = len(unique_months)
season = []
season_list = [0]*4
if 3 in unique_months or 4 in unique_months or 5 in unique_months:
season.append(" 春季")
season_list[0] = 1
if 6 in unique_months or 7 in unique_months or 8 in unique_months:
season.append(" 夏季")
season_list[1] = 1
if 9 in unique_months or 10 in unique_months or 11 in unique_months:
season.append(" 秋季")
season_list[2] = 1
if 12 in unique_months or 1 in unique_months or 2 in unique_months:
season.append(" 冬季")
season_list[3] = 1
result[name] = {
'出现的月份': unique_months,
'总共出现的月份数': total_months,
'出现的季节': season,
"季节数": len(season),
"季节列表": season_list
}
count_all = 0
count_all_list = []
# for key, value in result.items():
# print(f"当前处理的键: {key}, 值: {value}") # 输出当前处理的键值对
# if '季节数' in value: # 先检查键是否存在
# if value['季节数'] == 4:
# count_all += 1
# count_all_list.append(key)
# else:
# print(f"键 '季节数' 在 {key} 对应的字典中不存在") # 输出提示信息
for key, value in result.items():
if value['季节数'] == 4:
count_all += 1
count_all_list.append(key)
# print(f" 单品编码 {key} 出现在以下月份: {', '.join(map(str, value['出现的月份']))},总共出现的月份数: {value['总共现的月份数']}, 出现在 {value['出现的季节']}")
print(count_all)
print(count_all_list)
#%%
df_3['年份'] = df_3['日期'].dt.year
result = df_3.groupby(['单品编码', '年份']).agg({'日期': 'nunique'}).reset_index()
result.rename(columns={'日期': '天数'}, inplace=True)
#print(result)
max_days = result.groupby('单品编码')['天数'].max().reset_index()
# print(max_days)
plt.hist(max_days['天数'], bins=35, edgecolor='k') # 可自行调整 bins 参数来设置柱子数量
plt.xlabel('天数')
plt.ylabel(' 频 数 ')
plt.title('天数分布直方图')
plt.show()
filtered_df = max_days[max_days['天数'] <= 15]
cnt = 0
cnt_list = []
for index, row in filtered_df.iterrows():
cnt_list.append(row['单品编码'])
print(f" 单品编码:{row['单品编码']},一年最多出现{row['天数']}天")
cnt += 1
print(cnt)
代码二:
一、导入库和设置中文字体
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = [u'simHei']
plt.rcParams['axes.unicode_minus'] = False
这段代码导入了pandas
库和matplotlib.pyplot
模块,并设置了中文字体为simHei
,同时解决了负号显示问题。
二、数据读入和预处理
# 数据读入
df_1_2 = pd.read_excel('附件1.xlsx')
df_2_1 = pd.read_excel('附件2.xlsx')
# 将指定列转换为时间序列
df_2_1['销售日期'] = pd.to_datetime(df_2_1['销售日期'])
df_2_1['扫码销售时间'] = pd.to_datetime(df_2_1['销售日期'].astype(str) + ' ' + df_2_1['扫码销售时间'], errors='coerce', format='%Y-%m-%d %H:%M:%S.%f')
# 计算销售金额
df_2_1['销售金额'] = df_2_1['销量(千克)'] * df_2_1['销售单价(元/千克)']
# 分品类
mapping_dict = df_1_2.set_index('单品编码')['分类名称'].to_dict()
df_2_1['品类'] = df_2_1['单品编码'].map(mapping_dict)
print(df_2_1.head(5))
这里从两个 Excel 文件中读取数据到df_1_2
和df_2_1
两个DataFrame
对象。然后将df_2_1
中的销售日期
和扫码销售时间
列转换为时间序列,并通过销量和单价计算销售金额。接着,从df_1_2
创建一个映射字典,为df_2_1
添加品类
列,最后打印df_2_1
的前 5 行以查看结果。
三、处理没有销量的数据
unique_values_df_2_1 = df_2_1['单品编码'].unique()
unique_values_df_1_2 = df_1_2['单品编码'].unique()
values_only_in_df_1_2 = set(unique_values_df_1_2) - set(unique_values_df_2_1)
count_values_only_in_df_1_2 = len(values_only_in_df_1_2)
print("df_2_1 列'单品编码'的唯一值个数:", len(unique_values_df_2_1))
print("df_1_2 列'单品编码'的唯一值个数:", len(unique_values_df_1_2))
print("df_1_2 中有但是 df_2_1 中没有的值:", values_only_in_df_1_2)
print(" 这些值的个数:", count_values_only_in_df_1_2)
这段代码找出了df_1_2
中有但df_2_1
中没有的单品编码
,并打印了相关信息。
四、找出销售天数少的单品
threshold_1 = 10
result = df_2_1.groupby('单品编码')['销售日期'].nunique().reset_index()
result.rename(columns={'销售日期': '销售天数'}, inplace=True)
hist, bins = np.histogram(result['销售天数'], bins=10)
bin_centers = 0.5 * (bins[:-1] + bins[1:])
cmap = plt.cm.coolwarm
norm = plt.Normalize(vmin=min(hist), vmax=max(hist))
colors = cmap(norm(hist))
plt.figure(figsize=(8,6))
bars = plt.bar(bin_centers, hist, width=bins[1] - bins[0], color=colors, edgecolor='k', alpha=0.7)
for i, count in enumerate(hist):
plt.text(bin_centers[i], count + 5, str(count), ha='center', va='bottom')
plt.xlabel('销售天数')
plt.ylabel('单品数')
plt.title('销售天数分布直方图')
plt.grid(True)
sm = ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([])
cbar = plt.colorbar(sm, ax=plt.gca(), orientation='vertical')
cbar.set_label('计数', rotation=90, labelpad=15)
plt.show()
filtered_result = result[result['销售天数'] <= threshold_1]
count = filtered_result.shape[0]
list_1 = []
for index, row in filtered_result.iterrows():
if row[" 销售天数"] <= threshold_1:
list_1.append(row[" 单品编码"])
print(f'\n阈值为{threshold_1}时被筛除的单品数量: {count}')
print(" 分别是:")
print(list_1)
这里设置了销售天数的阈值为 10,计算了每个单品编码的不同销售日期数量,绘制了销售天数分布直方图,并找出销售天数小于等于阈值的单品编码,打印了相关信息。
五、找出销量低的单品
threshold_2 = 0.00003
grouped = df_2_1.groupby('单品编码')['销量(千克)'].sum().reset_index()
print(len(grouped))
total_sales = grouped['销量(千克)'].sum()
grouped['销量占比'] = grouped['销量(千克)'] / total_sales
low_percentage_groups = grouped[grouped['销量占比'] < threshold_2]['单品编码']
list_2 = low_percentage_groups.to_list()
print("\n所有组的销量总和:", total_sales)
print(f" 销量占比低于{threshold_2}的组的单品编码:")
print(list_2)
print(f" 总数是:{len(low_percentage_groups)}")
data_g = []
for i in grouped['销量占比']:
if i <= threshold_2:
data_g.append(i)
bins = 10
n, bins, patches = plt.hist(data_g, bins=bins, edgecolor='k')
plt.xlabel('销量占比')
plt.ylabel('频数')
plt.title('销量占比直方图')
plt.grid()
for i, rect in enumerate(patches):
height = rect.get_height()
plt.annotate(f'{height}', xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 5), textcoords='offset points', ha='center', va='bottom')
plt.show()
设置了销量占比的阈值为 0.00003,计算了每个单品编码的总销量和销量占比,找出销量占比小于阈值的单品编码,绘制了销量占比直方图,并打印了相关信息。
六、取交集
intersection = list(set(list_1) & set(list_2))
print(f"\n交集数量为:{len(intersection)}")
print(intersection)
计算了销售天数少和销量低的单品编码的交集,并打印了交集数量和交集内容。
七、查看特定单品编码的销售情况
target_item = intersection[1]
grouped = df_2_1.groupby(['单品编码', '销售日期'])['销量(千克)'].sum().reset_index()
filtered_df_2_1 = grouped[grouped['单品编码'] == target_item]
print(filtered_df_2_1)
plt.figure(figsize=(10, 6))
plt.plot(filtered_df_2_1['销售日期'], filtered_df_2_1['销量(千克)'], marker='o', linestyle='-')
plt.title(f'单品编码 {target_item} 的销售日期和销量折线图')
plt.xlabel('销售日期')
plt.ylabel('销售金额')
plt.grid(True)
plt.show()
从交集中选择一个特定的单品编码,查看其销售日期和销量情况,并绘制折线图。
完整代码:
mport pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = [u'simHei']
plt.rcParams['axes.unicode_minus'] = False
#%%
# 数据读入
df_1_2=pd.read_excel('附件1.xlsx')
df_2_1=pd.read_excel('附件2.xlsx')
#%%
# 将指定列转换为时间序列
df_2_1['销售日期'] = pd.to_datetime(df_2_1['销售日期'])
df_2_1['扫码销售时间'] = pd.to_datetime(df_2_1['销售日期'].astype(str) + ' ' + df_2_1['扫码销售时间'],errors='coerce',format='%Y-%m-%d %H:%M:%S.%f')
# 计算销售金额
df_2_1['销售金额'] = df_2_1['销量(千克)'] * df_2_1['销售单价(元/千克)'] # 通过销量和单价计算销售金额
# 分品类
mapping_dict = df_1_2.set_index('单品编码')['分类名称'].to_dict() # 从df_1_2创建映射字典
df_2_1['品类'] = df_2_1['单品编码'].map(mapping_dict) # 根据映射字典为df_2_1添加'品类'列
print(df_2_1.head(5)) # 打印df_2_1的前5行
####### 第一步:处理没有销量的数据 ######
unique_values_df_2_1 = df_2_1['单品编码'].unique() # 获取df_2_1中'单品编码'的唯一值
unique_values_df_1_2 = df_1_2['单品编码'].unique() # 获取df_2_1_1_2中'单品编码'的唯一值
values_only_in_df_1_2 = set(unique_values_df_1_2) - set(unique_values_df_2_1) # 找出df_2_1_1_2中有但df_2_1中没有的'单品编码'
count_values_only_in_df_1_2 = len(values_only_in_df_1_2) # 计算上述差值的数量
print("df_2_1 列'单品编码'的唯一值个数:", len(unique_values_df_2_1)) # 打印df_2_1中'单品编码'唯一值的个数
print("df_1_2 列'单品编码'的唯一值个数:", len(unique_values_df_1_2)) # 打印df_2_1_1_2中'单品编码'唯一值的个数
print("df_1_2 中有但是 df_2_1 中没有的值:", values_only_in_df_1_2) # 打印df_2_1_1_2中有但df_2_1中没有的'单品编码'值
print(" 这些值的个数:", count_values_only_in_df_1_2) # 打印个数
####### 第二步:销售天数少(阈值 1)的单品找出来 ########
threshold_1 = 10 # 设置销售天数的阈值
import numpy as np # 导入numpy库
from matplotlib.cm import ScalarMappable # 从matplotlib库导入ScalarMappable
result = df_2_1.groupby('单品编码')['销售日期'].nunique().reset_index() # 按'单品编码'分组,计算每个编码的不同销售日期数量
result.rename(columns={'销售日期': '销售天数'}, inplace=True) # 重命名列
hist, bins = np.histogram(result['销售天数'], bins=10) # 计算销售天数的直方图
bin_centers = 0.5 * (bins[:-1] + bins[1:]) # 计算直方图的中心位置
cmap = plt.cm.coolwarm # 设置颜色映射
norm = plt.Normalize(vmin=min(hist), vmax=max(hist)) # 归一化
colors = cmap(norm(hist)) # 获取颜色
plt.figure(figsize=(8,6)) # 创建图形
bars = plt.bar(bin_centers, hist, width=bins[1] - bins[0], color=colors, edgecolor='k', alpha=0.7) # 绘制直方图
for i, count in enumerate(hist): # 为直方图添加数量标签
plt.text(bin_centers[i], count + 5, str(count), ha='center', va='bottom')
plt.xlabel('销售天数') # 设置x轴标签
plt.ylabel('单品数') # 设置y轴标签
plt.title('销售天数分布直方图') # 设置标题
plt.grid(True) # 显示网格
sm = ScalarMappable(cmap=cmap, norm=norm) # 创建ScalarMappable对象
sm.set_array([]) # 设置数组
cbar = plt.colorbar(sm, ax=plt.gca(), orientation='vertical') # 添加颜色条
cbar.set_label('计数', rotation=90, labelpad=15) # 设置颜色条标签
plt.show() # 显示图形
filtered_result = result[result['销售天数'] <= threshold_1] # 筛选销售天数小于等于阈值的结果
count = filtered_result.shape[0] # 获取筛选结果的数量
#print(f" 销售天数小于等于 {threshold_1} 的单品编码和数量:")
list_1 = [] # 创建列表
for index, row in filtered_result.iterrows(): # 遍历筛选结果
if row[" 销售天数"] <= threshold_1:
list_1.append(row[" 单品编码"]) # 将符合条件的单品编码添加到列表
print(f'\n阈值为{threshold_1}时被筛除的单品数量: {count}') # 打印筛除的数量
print(" 分别是:")
print(list_1) # 打印单品编码列表
threshold_2 = 0.00003 # 设置销量占比的阈值
######### 第三步:销量低(阈值 2)的单品找出来 #########
grouped = df_2_1.groupby('单品编码')['销量(千克)'].sum().reset_index() # 按'单品编码'分组,计算每个编码的总销量
print(len(grouped)) # 打印分组的数量
total_sales = grouped['销量(千克)'].sum() # 计算总销量
grouped['销量占比'] = grouped['销量(千克)'] / total_sales # 计算每个编码的销量占比
low_percentage_groups = grouped[grouped['销量占比'] < threshold_2]['单品编码'] # 筛选销量占比小于阈值的单品编码
list_2 = low_percentage_groups.to_list() # 将筛选结果转换为列表
print("\n所有组的销量总和:", total_sales) # 打印总销量
print(f" 销量占比低于{threshold_2}的组的单品编码:")
print(list_2) # 打印单品编码列表
print(f" 总数是:{len(low_percentage_groups)}") # 打印数量
data_g = [] # 创建列表
for i in grouped['销量占比']: # 遍历销量占比
if i <= threshold_2:
data_g.append(i) # 将符合条件的销量占比添加到列表
bins = 10 # 设置直方图的箱数
n, bins, patches = plt.hist(data_g, bins=bins, edgecolor='k') # 绘制销量占比的直方图
plt.xlabel('销量占比') # 设置x轴标签
plt.ylabel('频数') # 设置y轴标签
plt.title('销量占比直方图') # 设置标题
plt.grid() # 显示网格
for i, rect in enumerate(patches): # 为直方图添加数量标签
height = rect.get_height()
plt.annotate(f'{height}', xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 5), textcoords='offset points', ha='center', va='bottom')
plt.show() # 显示图形
########### 第四步:取交集 ###########
# 将列表转换为集合,然后取交集
intersection = list(set(list_1) & set(list_2)) # 计算两个列表的交集
print(f"\n交集数量为:{len(intersection)}") # 打印交集数量
print(intersection) # 打印交集
############ 第五步:查看 ###########
# 选择特定的单品编码
target_item = intersection[1] # 从交集中选择第二个单品编码
grouped = df_2_1.groupby(['单品编码', '销售日期'])['销量(千克)'].sum().reset_index() # 按'单品编码'和'销售日期'分组,计算销量总和
filtered_df_2_1 = grouped[grouped['单品编码'] == target_item] # 筛选出特定单品编码的结果
print(filtered_df_2_1) # 打印筛选结果
# 绘制折线图
plt.figure(figsize=(10, 6)) # 创建图形
plt.plot(filtered_df_2_1['销售日期'], filtered_df_2_1['销量(千克)'], marker='o', linestyle='-') # 绘制折线图
plt.title(f'单品编码 {target_item} 的销售日期和销量折线图') # 设置标题
plt.xlabel('销售日期') # 设置x轴标签
plt.ylabel('销售金额') # 设置y轴标签
plt.grid(True) # 显示网格
# 显示折线图
plt.show() # 显示图形
数据集(例样)
销售日期 | 扫码销售时间 | 单品编码 | 销量(千克) | 销售单价(元/千克) | 销售类型 | 是否打折销售 |
2020-07-01 | 09:15:07.924 | 102900005117056 | 0.396 | 7.60 | 销售 | 否 |
2020-07-01 | 09:17:27.295 | 102900005115960 | 0.849 | 3.20 | 销售 | 否 |
2020-07-01 | 09:17:33.905 | 102900005117056 | 0.409 | 7.60 | 销售 | 否 |
2020-07-01 | 09:19:45.450 | 102900005115823 | 0.421 | 10.00 | 销售 | 否 |
2020-07-01 | 09:20:23.686 | 102900005115908 | 0.539 | 8.00 | 销售 | 否 |
2020-07-01 | 09:21:55.556 | 102900005117056 | 0.277 | 7.60 | 销售 | 否 |
2020-07-01 | 09:21:56.536 | 102900005115779 | 0.338 | 8.00 | 销售 | 否 |
2020-07-01 | 09:22:01.274 | 102900005117056 | 0.132 | 7.60 | 销售 | 否 |
2020-07-01 | 09:22:01.476 | 102900005115779 | 0.213 | 8.00 | 销售 | 否 |
2020-07-01 | 09:22:15.998 | 102900011008522 | 0.514 | 8.00 | 销售 | 否 |
2020-07-01 | 09:22:21.264 | 102900005118824 | 0.251 | 10.00 | 销售 | 否 |
2020-07-01 | 09:24:21.833 | 102900005115984 | 0.251 | 6.00 | 销售 | 否 |
2020-07-01 | 09:24:21.905 | 102900005116530 | 0.217 | 18.00 | 销售 | 否 |
2020-07-01 | 09:24:57.873 | 102900005115984 | 0.468 | 6.00 | 销售 | 否 |
2020-07-01 | 09:25:31.342 | 102900005116226 | 0.589 | 8.00 | 销售 | 否 |
2020-07-01 | 09:25:45.811 | 102900005118824 | 0.711 | 10.00 | 销售 | 否 |
2020-07-01 | 09:26:04.530 | 102900005115779 | 1.003 | 8.00 | 销售 | 否 |
2020-07-01 | 09:28:01.983 | 102900005116530 | 0.095 | 18.00 | 销售 | 否 |
2020-07-01 | 09:30:17.045 | 102900005116233 | 0.150 | 10.00 | 销售 | 否 |
2020-07-01 | 09:30:26.948 | 102900005115984 | 0.502 | 6.00 | 销售 | 否 |
2020-07-01 | 09:31:42.483 | 102900005115984 | 0.452 | 6.00 | 销售 | 否 |
2020-07-01 | 09:32:25.623 | 102900005115908 | 0.501 | 8.00 | 销售 | 否 |
2020-07-01 | 09:32:59.701 | 102900005115779 | 0.201 | 8.00 | 销售 | 否 |
2020-07-01 | 09:33:08.981 | 102900005115779 | 0.439 | 8.00 | 销售 | 否 |
2020-07-01 | 09:33:09.579 | 102900005115762 | 0.686 | 6.00 | 销售 | 否 |
2020-07-01 | 09:33:09.998 | 102900005116714 | 0.329 | 14.00 | 销售 | 否 |
2020-07-01 | 09:35:02.477 | 102900005115908 | 0.251 | 8.00 | 销售 | 否 |
2020-07-01 | 09:35:02.557 | 102900005118817 | 0.243 | 14.00 | 销售 | 否 |
2020-07-01 | 09:35:13.164 | 102900005116530 | 0.256 | 18.00 | 销售 | 否 |
2020-07-01 | 09:35:40.456 | 102900005115984 | 0.318 | 6.00 | 销售 | 否 |
2020-07-01 | 09:36:36.108 | 102900011009970 | 0.445 | 9.00 | 销售 | 否 |
2020-07-01 | 09:36:41.217 | 102900005115779 | 0.363 | 8.00 | 销售 | 否 |
2020-07-01 | 09:36:42.447 | 102900005117209 | 0.482 | 16.00 | 销售 | 否 |
2020-07-01 | 09:36:43.131 | 102900011001219 | 0.343 | 14.00 | 销售 | 否 |
2020-07-01 | 09:38:48.342 | 102900005115984 | 0.502 | 6.00 | 销售 | 否 |
2020-07-01 | 09:39:03.622 | 102900005115779 | 0.301 | 8.00 | 销售 | 否 |
2020-07-01 | 09:41:09.342 | 102900005117056 | 0.198 | 7.60 | 销售 | 否 |
2020-07-01 | 09:41:22.206 | 102900051004294 | 0.172 | 14.00 | 销售 | 否 |
2020-07-01 | 09:41:22.701 | 102900005117056 | 0.660 | 7.60 | 销售 | 否 |
2020-07-01 | 09:41:37.873 | 102900005115984 | 0.753 | 6.00 | 销售 | 否 |
2020-07-01 | 09:41:50.626 | 102900005115984 | 0.552 | 6.00 | 销售 | 否 |
2020-07-01 | 09:41:50.904 | 102900051004294 | 0.057 | 14.00 | 销售 | 否 |
2020-07-01 | 09:43:10.108 | 102900005115960 | 1.101 | 3.20 | 销售 | 否 |
2020-07-01 | 09:44:13.951 | 102900005116547 | 0.435 | 6.00 | 销售 | 否 |
2020-07-01 | 09:44:30.811 | 102900005115984 | 0.201 | 6.00 | 销售 | 否 |
单品编码 | 单品名称 | 分类编码 | 分类名称 |
102900005115168 | 牛首生菜 | 1011010101 | 花叶类 |
102900005115199 | 四川红香椿 | 1011010101 | 花叶类 |
102900005115625 | 本地小毛白菜 | 1011010101 | 花叶类 |
102900005115748 | 白菜苔 | 1011010101 | 花叶类 |
102900005115762 | 苋菜 | 1011010101 | 花叶类 |
102900005115779 | 云南生菜 | 1011010101 | 花叶类 |
102900005115786 | 竹叶菜 | 1011010101 | 花叶类 |
102900005115793 | 小白菜 | 1011010101 | 花叶类 |
102900005115816 | 南瓜尖 | 1011010101 | 花叶类 |
102900005115823 | 上海青 | 1011010101 | 花叶类 |
102900005115854 | 萝卜叶 | 1011010101 | 花叶类 |
102900005115861 | 牛首油菜 | 1011010101 | 花叶类 |
102900005115878 | 茼蒿 | 1011010101 | 花叶类 |
102900005115885 | 蔡甸藜蒿 | 1011010101 | 花叶类 |
102900005115908 | 菜心 | 1011010101 | 花叶类 |
102900005115946 | 木耳菜 | 1011010101 | 花叶类 |
102900005115960 | 大白菜 | 1011010101 | 花叶类 |
102900005115977 | 豌豆尖 | 1011010101 | 花叶类 |
102900005115984 | 云南油麦菜 | 1011010101 | 花叶类 |
102900005116639 | 马齿苋 | 1011010101 | 花叶类 |
102900005116776 | 本地菠菜 | 1011010101 | 花叶类 |
日期 | 单品编码 | 批发价格(元/千克) |
2020-07-01 | 102900005115762 | 3.88 |
2020-07-01 | 102900005115779 | 6.72 |
2020-07-01 | 102900005115786 | 3.19 |
2020-07-01 | 102900005115793 | 9.24 |
2020-07-01 | 102900005115823 | 7.03 |
2020-07-01 | 102900005115908 | 4.60 |
2020-07-01 | 102900005115946 | 4.20 |
2020-07-01 | 102900005115960 | 2.10 |
2020-07-01 | 102900005115984 | 3.44 |
2020-07-01 | 102900005116226 | 4.64 |
2020-07-01 | 102900005116233 | 5.76 |
2020-07-01 | 102900005116257 | 6.56 |
2020-07-01 | 102900005116509 | 1.63 |
2020-07-01 | 102900005116530 | 10.80 |
2020-07-01 | 102900005116547 | 4.06 |
2020-07-01 | 102900005116714 | 9.23 |
2020-07-01 | 102900005116790 | 3.97 |
2020-07-01 | 102900005116912 | 8.16 |
2020-07-01 | 102900005116943 | 7.83 |
2020-07-01 | 102900005117056 | 4.32 |
2020-07-01 | 102900005117209 | 7.58 |
2020-07-01 | 102900005118817 | 8.47 |
2020-07-01 | 102900005118824 | 5.65 |
2020-07-01 | 102900005118831 | 4.13 |
2020-07-01 | 102900005119944 | 10.29 |
2020-07-01 | 102900005119975 | 3.60 |
2020-07-01 | 102900005123880 | 7.50 |
2020-07-01 | 102900005125808 | 12.10 |
2020-07-01 | 102900005125815 | 6.16 |
2020-07-01 | 102900011001219 | 8.24 |
2020-07-01 | 102900011006948 | 11.69 |
2020-07-01 | 102900011008522 | 4.44 |
2020-07-01 | 102900011009970 | 6.03 |
2020-07-01 | 102900051000944 | 29.43 |
2020-07-01 | 102900051004294 | 6.81 |
单品编码 | 单品名称 | 损耗率(%) |
102900005115168 | 牛首生菜 | 4.39 |
102900005115199 | 四川红香椿 | 10.46 |
102900005115250 | 西峡花菇(1) | 10.80 |
102900005115625 | 本地小毛白菜 | 0.18 |
102900005115748 | 白菜苔 | 8.78 |
102900005115762 | 苋菜 | 18.52 |
102900005115779 | 云南生菜 | 15.25 |
102900005115786 | 竹叶菜 | 13.62 |
102900005115793 | 小白菜 | 7.59 |
102900005115816 | 南瓜尖 | 13.46 |
102900005115823 | 上海青 | 14.43 |
102900005115854 | 萝卜叶 | 5.35 |
102900005115861 | 牛首油菜 | 12.17 |
102900005115878 | 茼蒿 | 6.27 |
102900005115885 | 蔡甸藜蒿 | 0.47 |
102900005115908 | 菜心 | 13.70 |
102900005115946 | 木耳菜 | 7.61 |
102900005115960 | 大白菜 | 22.27 |
102900005115977 | 豌豆尖 | 8.36 |
102900005115984 | 云南油麦菜 | 12.81 |
102900005116042 | 藕 | 15.32 |
102900005116219 | 红尖椒 | 6.73 |
102900005116226 | 青尖椒 | 6.72 |
102900005116233 | 红椒(1) | 11.76 |
102900005116257 | 紫茄子(2) | 6.07 |
102900005116509 | 青茄子(1) | 5.01 |
102900005116530 | 西峡香菇(1) | 13.82 |
102900005116547 | 金针菇(1) | 3.43 |
102900005116639 | 马齿苋 | 11.78 |
102900005116714 | 西兰花 | 9.26 |
102900005116776 | 本地菠菜 | 10.46 |
102900005116790 | 黄心菜(1) | 10.64 |
102900005116806 | 黑油菜 | 0.10 |
102900005116837 | 平菇 | 11.60 |
102900005116899 | 净藕(1) | 5.54 |
102900005116905 | 青杭椒(1) | 0.00 |
102900005116912 | 姬菇(1) | 8.99 |