Openpyxl列表 根据条件汇总
时间: 2024-01-23 21:02:56 浏览: 139
您可以使用Python的openpyxl库来读取Excel文件,并使用条件筛选数据,然后汇总。
以下是一个示例代码,假设您要筛选名为Sheet1的工作表中所有“是”值的行,并汇总第2列的数值:
```python
import openpyxl
# 打开Excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 选择工作表
sheet = wb['Sheet1']
# 创建空列表来存放符合条件的行
filtered_rows = []
# 遍历每一行
for row in sheet.iter_rows(min_row=2, values_only=True):
# 如果第一列的值为“是”,则将该行添加到列表中
if row[0] == '是':
filtered_rows.append(row)
# 计算第2列的总和
total = sum(row[1] for row in filtered_rows)
# 打印总和
print(total)
```
请注意,此代码假定第1列为条件列,第2列为要汇总的列。如果您的情况不同,请相应地更改代码。
相关问题
python爬取的json数据怎样提取关键词,并用excel汇总
在Python中,处理JSON数据并提取关键词通常涉及以下几个步骤:
1. **解析JSON**:首先,你需要使用`json`模块将JSON字符串转换为Python字典或列表,以便于操作。例如:
```python
import json
data = json.loads(json_data)
```
2. **提取关键词**:假设关键词是文本字段的一部分,你可以遍历数据结构,查找包含关键词的元素。可以使用简单的条件判断,如检查是否包含特定的词语,或者使用正则表达式提取。
```python
keywords = []
for item in data:
if 'content' in item and 'keyword' in item['content']:
keywords.extend(item['content'].split())
```
3. **去重和清理**:由于一次搜索可能会返回重复的关键词,需要去除重复项,并可能对关键词进行一些预处理,比如转换为小写、移除标点等。
```python
unique_keywords = list(set(keywords.lower())) # 将所有关键词转换为小写并去重
```
4. **写入Excel**:使用`pandas`库可以把关键词列表导出到Excel文件中。假设已经安装了`openpyxl`库。
```python
import pandas as pd
df_keywords = pd.DataFrame({'Keywords': unique_keywords})
df_keywords.to_excel('keywords.xlsx', index=False)
```
from flask import Flask, render_template, request import pandas as pd from openpyxl import load_workbook app = Flask(__name__) @app.route('/') def index(): return render_template('index2.html') @app.route('/submit', methods=['POST']) def submit(): # 获取表单数据 line = request.form['line'] date = request.form['date'] model = request.form['model'] lists = request.form['lists'] number = request.form['number'] prod_date = request.form['prod_date'] shift = request.form['shift'] prod_line = request.form['prod_line'] responsible = request.form['responsible'] # 表单验证:检查是否所有表单字段都已填写 if not all([line, date, model, lists, number, prod_date, shift, prod_line, responsible]): return "<script>alert('请填写完整表单信息!');history.back();</script>" else: # 在这里添加提交表单信息的代码 return "<script>alert('提交成功!');window.location.href='/';</script>" # 将数据存储到 Excel 文件中 file_path = 'D:/data.xlsx' wb = load_workbook(file_path) ws = wb.active ws.append([line, date, model, lists, number, prod_date, shift, prod_line, responsible]) wb.save(file_path) return render_template('index2.html') @app.route('/history') def history(): # 从 Excel 文件中读取历史记录 file_path = 'D:/data.xlsx' df = pd.read_excel(file_path,keep_default_na=False) # 获取查询参数 query_date = request.args.get('date') query_line = request.args.get('line') query_model = request.args.get('model') # 进行查询 if query_date: df = df[df['确认日期'] == query_date] if query_line: df = df[df['确认线别'] == query_line] if query_model: df = df[df['异常机种'] == query_model] # 生成汇总图表 chart_data = df.groupby('异常现象').size().reset_index(name='count') chart_labels = chart_data['异常现象'].tolist() chart_values = chart_data['count'].tolist() return render_template('history.html', data=df.to_dict('records'), chart_labels=chart_labels, chart_values=chart_values) @app.route('/chart') def chart(): return render_template('chart.html') if __name__ == '__main__': app.run(debug=True)
这段代码看起来没有问题,但如果你想让历史记录查询更加精确,可以考虑使用 Pandas 的过滤功能,例如:
```python
# 从 Excel 文件中读取历史记录
file_path = 'D:/data.xlsx'
df = pd.read_excel(file_path, keep_default_na=False)
# 获取查询参数
query_date = request.args.get('date')
query_line = request.args.get('line')
query_model = request.args.get('model')
# 进行查询
conditions = []
if query_date:
conditions.append(df['确认日期'] == query_date)
if query_line:
conditions.append(df['确认线别'] == query_line)
if query_model:
conditions.append(df['异常机种'] == query_model)
if conditions:
df = df[pd.concat(conditions, axis=1).all(axis=1)]
```
这样可以实现多条件过滤,只显示符合条件的历史记录。
阅读全文