python获取excel数据,有多列数据,分别为检验日期,规格,直径,破断拉力,颗粒密度,标准差,要求用户输入客户名称,再输入规格,再输入查询条件,输入对应条件的折线图
时间: 2024-06-07 22:05:10 浏览: 127
感谢您的提问。根据您的要求,我可以为您提供如下思路:
1. 首先,可以使用Python中的pandas库和xlrd库来读取Excel中的数据。
2. 将读取到的数据存储在DataFrame中,并使用pandas中的groupby函数来按照客户名称和规格进行分组。
3. 对分组后的数据进行筛选,根据用户输入的查询条件进行过滤,并使用matplotlib库绘制相应折线图。
4. 最后,将生成的图形保存到本地,并展示给用户。
请注意,以上思路仅供参考,实现方式可能因具体条件而异。如果您对具体实现方法有疑问,可以进一步了解以上提到的库,或向相关技术社区寻求帮助。
相关问题
python获取excel文件,多列数据分别为,取样时间,工艺编号,直径平均值,破断拉力,破断增量,首先通过取样时间进行分类,每周为一组,然后再根据工艺编号相同的数据为一组,查看每组数据的直径平均值,破断拉力和破断增量的值,然后输出性能趋势图,要求有文本注释
以下是一个示例代码,实现了根据取样时间和工艺编号分类并计算每组数据的平均值和趋势图。
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel文件
df = pd.read_excel('data.xlsx')
# 根据取样时间分类
df['Week'] = df['取样时间'].dt.week
week_groups = df.groupby('Week')
# 根据工艺编号分类并计算平均值
result = []
for name, group in week_groups:
tech_groups = group.groupby('工艺编号')
for tech, tech_group in tech_groups:
avg_diameter = tech_group['直径平均值'].mean()
avg_tensile = tech_group['破断拉力'].mean()
avg_increment = tech_group['破断增量'].mean()
result.append({'Week': name, '工艺编号': tech, '直径平均值': avg_diameter,
'破断拉力': avg_tensile, '破断增量': avg_increment})
# 转换为DataFrame并输出性能趋势图
result_df = pd.DataFrame(result)
tech_groups = result_df.groupby('工艺编号')
for tech, tech_group in tech_groups:
plt.plot(tech_group['Week'], tech_group['直径平均值'], label='直径平均值')
plt.plot(tech_group['Week'], tech_group['破断拉力'], label='破断拉力')
plt.plot(tech_group['Week'], tech_group['破断增量'], label='破断增量')
plt.title('工艺编号{}'.format(tech))
plt.xlabel('周数')
plt.ylabel('平均值')
plt.legend()
plt.show()
```
该代码使用pandas库读取Excel文件,并根据取样时间分类数据。然后再根据工艺编号分类数据,并计算每组数据的平均值。最后,将结果转换为DataFrame并绘制性能趋势图,每个图表显示一个工艺编号的数据,其中包含每周的直径平均值、破断拉力和破断增量的趋势线。图表中还包含文本注释,指明了工艺编号和坐标轴的含义。
python获取excel数据,分别是车间号,取样时间,样品类型,检验结果,备注,先按照车间号进行分组,每组数据再按照样品类型分组,计算每组数据检验结果为合格的占比,结果以百分比显示,再计算每组数据备注含有脱镀字符的占比,再计算每组数据备注含有破断低字符的占比,再计算每组数据备注含有颗粒多字符的占比,再计算每组数据备注含有颗粒少字符的占比,再计算每组数据备注含有团聚字符的占比,均以百分比显示,然后输出数据透视表,以车间号为行索引,显示每组数据的个数,合格数据的个数,最后显示总体的合格占比,脱镀占比,破断低占比,颗粒多占比,颗粒少占比,团聚占比,最后将数据透视表保存到excel表中
好的,这是一个数据处理的问题。首先,你需要安装 pandas 和 openpyxl 库,然后读取 excel 数据,对数据进行预处理。代码示例如下:
```
import pandas as pd
# 读取 excel 数据
df = pd.read_excel('data.xlsx')
# 按照车间号和样品类型分组,并计算合格率和备注占比
grouped = df.groupby(['车间号', '样品类型']).agg({
'检验结果': lambda x: sum(x == '合格') / len(x) * 100,
'备注': lambda x: {
'脱镀': sum('脱镀' in s for s in x) / len(x) * 100,
'破断低': sum('破断低' in s for s in x) / len(x) * 100,
'颗粒多': sum('颗粒多' in s for s in x) / len(x) * 100,
'颗粒少': sum('颗粒少' in s for s in x) / len(x) * 100,
'团聚': sum('团聚' in s for s in x) / len(x) * 100
}
})
# 计算总体合格率和备注占比
overall = pd.DataFrame({
'合格率': grouped['检验结果'].mean(),
'脱镀占比': grouped['备注'].apply(lambda x: sum(x['脱镀']) / grouped.shape[0] * 100),
'破断低占比': grouped['备注'].apply(lambda x: sum(x['破断低']) / grouped.shape[0] * 100),
'颗粒多占比': grouped['备注'].apply(lambda x: sum(x['颗粒多']) / grouped.shape[0] * 100),
'颗粒少占比': grouped['备注'].apply(lambda x: sum(x['颗粒少']) / grouped.shape[0] * 100),
'团聚占比': grouped['备注'].apply(lambda x: sum(x['团聚']) / grouped.shape[0] * 100)
})
# 输出数据透视表
table = pd.pivot_table(df, index=['车间号'], values=['样品类型'], aggfunc='count',
columns=['检验结果'], fill_value=0, margins=True)
# 添加总体统计数据
table.loc['合格率'] = [grouped['检验结果'].mean() * grouped.shape[0], grouped.shape[0] - grouped['检验结果'].mean() * grouped.shape[0]]
table.loc[['脱镀占比', '破断低占比', '颗粒多占比', '颗粒少占比', '团聚占比']] = [''] * table.shape[1]
# 将数据透视表保存到 excel 表中
with pd.ExcelWriter('result.xlsx') as writer:
table.to_excel(writer, index_label='车间号')
overall.to_excel(writer, sheet_name='总体统计')
grouped.to_excel(writer, sheet_name='分组统计')
```
你可以将数据保存到 data.xlsx 文件中并运行上面的代码,然后会生成 result.xlsx 文件。其中,总体统计和分组统计是不同的 sheet,分别描述了总体数据和各组数据的统计结果。数据透视表展示了各个车间的样品数量和合格率。
注意:以上代码仅用于示例,实际应用中需要根据数据格式进行修改。
阅读全文