python获取excel数据,有多列数据,分别是取样时间,生产线编号,检验结果,备注,首先提取系统当前时间前一天的数据,按生产线编号第一位的字符进行分组,检验结果为合格的个数与每组整体数据个数进行计算占比,备注中包含脱镀的个数与每组整体数据个数计算占比,输出数据透视表,代码实现
时间: 2024-05-15 15:18:52 浏览: 116
好的,这是一个技术问题,我可以帮您回答。
首先,我们可以使用 Python 的 pandas 库来读取 Excel 数据。您需要安装 pandas 库并导入:
```
import pandas as pd
```
接着,读取 Excel 文件并获取当前时间前一天的数据:
```
df = pd.read_excel('your_excel_file.xlsx')
yesterday = pd.Timestamp.now().normalize() - pd.Timedelta(days=1)
df = df[df['取样时间'] >= yesterday]
```
然后,按照生产线编号第一位的字符进行分组:
```
df['生产线编号一位'] = df['生产线编号'].str[0]
groups = df.groupby('生产线编号一位')
```
接下来,我们需要计算每组数据中检验结果为合格的个数,并与整体数据个数进行计算占比:
```
results = groups['检验结果'].value_counts(normalize=True)
pass_rates = results.loc[:, '合格'] * 100
```
最后,我们需要计算每组数据中备注中包含脱镀的个数,并与整体数据个数进行计算占比:
```
def count_stripes(row):
if '脱镀' in row['备注']:
return 1
else:
return 0
df['含脱镀'] = df.apply(count_stripes, axis=1)
stripes = groups['含脱镀'].value_counts(normalize=True)
stripes_rates = stripes.loc[:, 1] * 100
```
最后,我们可以使用 pandas 的 pivot_table 方法生成数据透视表输出:
```
table = pd.pivot_table(data=df, index='生产线编号一位', values=['检验结果', '包含脱镀'], aggfunc={'检验结果': len, '包含脱镀': sum})
```
完整代码如下:
```
import pandas as pd
df = pd.read_excel('your_excel_file.xlsx')
yesterday = pd.Timestamp.now().normalize() - pd.Timedelta(days=1)
df = df[df['取样时间'] >= yesterday]
df['生产线编号一位'] = df['生产线编号'].str[0]
groups = df.groupby('生产线编号一位')
results = groups['检验结果'].value_counts(normalize=True)
pass_rates = results.loc[:, '合格'] * 100
def count_stripes(row):
if '脱镀' in row['备注']:
return 1
else:
return 0
df['含脱镀'] = df.apply(count_stripes, axis=1)
stripes = groups['含脱镀'].value_counts(normalize=True)
stripes_rates = stripes.loc[:, 1] * 100
table = pd.pivot_table(data=df, index='生产线编号一位', values=['检验结果', '包含脱镀'], aggfunc={'检验结果': len, '包含脱镀': sum})
```
希望这可以帮助您解决问题。
阅读全文