本文目录导读:

Python + Pandas (最常用)
基础汇总脚本
import pandas as pd
import numpy as np
# 读取数据
df = pd.read_csv('data.csv')
# 基本汇总
summary = {
'总行数': len(df),
'总销售额': df['销售额'].sum(),
'平均销售额': df['销售额'].mean(),
'最大销售额': df['销售额'].max(),
'最小销售额': df['销售额'].min()
}
# 分组汇总
grouped = df.groupby('部门').agg({
'销售额': ['sum', 'mean', 'count'],
'成本': 'sum',
'利润': ['sum', 'mean']
})
# 导出结果
summary_df = pd.DataFrame([summary])
summary_df.to_excel('汇总结果.xlsx', index=False)
高级汇总脚本
import pandas as pd
from datetime import datetime
class DataSummarizer:
def __init__(self, file_path):
self.df = pd.read_csv(file_path)
def basic_stats(self, columns):
"""基础统计"""
return self.df[columns].describe()
def group_summary(self, group_col, agg_cols):
"""分组汇总"""
return self.df.groupby(group_col)[agg_cols].sum()
def time_series_summary(self, date_col, value_col, freq='M'):
"""时间序列汇总"""
self.df[date_col] = pd.to_datetime(self.df[date_col])
return self.df.set_index(date_col).resample(freq)[value_col].sum()
def cross_tab(self, row_col, col_col, value_col):
"""交叉表汇总"""
return pd.pivot_table(
self.df,
values=value_col,
index=row_col,
columns=col_col,
aggfunc=np.sum
)
# 使用示例
summarizer = DataSummarizer('销售数据.csv')
monthly_sales = summarizer.time_series_summary('日期', '销售额', 'M')
SQL 脚本
基本汇总查询
-- 基本统计
SELECT
COUNT(*) as 总记录数,
SUM(销售额) as 总销售额,
AVG(销售额) as 平均销售额,
MAX(销售额) as 最大销售额,
MIN(销售额) as 最小销售额
FROM 销售表;
-- 分组汇总
SELECT
部门,
SUM(销售额) as 部门总销售额,
AVG(销售额) as 部门平均销售额,
COUNT(*) as 部门订单数
FROM 销售表
GROUP BY 部门
HAVING SUM(销售额) > 10000
ORDER BY 部门总销售额 DESC;
-- 多层汇总
SELECT
COALESCE(部门, '总计') as 部门,
COALESCE(产品类别, '小计') as 产品类别,
SUM(销售额) as 销售额合计
FROM 销售表
GROUP BY ROLLUP(部门, 产品类别);
存储过程
CREATE PROCEDURE GenerateSalesSummary
@StartDate DATE,
@EndDate DATE
AS
BEGIN
-- 创建临时表存储汇总结果
CREATE TABLE #SalesSummary (
Category VARCHAR(50),
TotalSales DECIMAL(18,2),
OrderCount INT,
AvgOrderValue DECIMAL(18,2)
);
-- 插入汇总数据
INSERT INTO #SalesSummary
SELECT
ProductCategory,
SUM(SalesAmount),
COUNT(DISTINCT OrderID),
AVG(SalesAmount)
FROM Sales
WHERE OrderDate BETWEEN @StartDate AND @EndDate
GROUP BY ProductCategory;
-- 返回结果
SELECT * FROM #SalesSummary
ORDER BY TotalSales DESC;
-- 清理临时表
DROP TABLE #SalesSummary;
END;
Excel VBA 宏
Sub GenerateSummary()
Dim ws As Worksheet
Dim summaryWS As Worksheet
Dim lastRow As Long
Dim dataRange As Range
Dim dict As Object
' 设置数据工作表
Set ws = ThisWorkbook.Sheets("数据")
Set summaryWS = ThisWorkbook.Sheets("汇总")
' 获取数据范围
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set dataRange = ws.Range("A1:D" & lastRow)
' 创建字典用于分组汇总
Set dict = CreateObject("Scripting.Dictionary")
' 遍历数据
For i = 2 To lastRow
category = ws.Cells(i, 1).Value
amount = ws.Cells(i, 3).Value
If dict.exists(category) Then
dict(category) = dict(category) + amount
Else
dict.Add category, amount
End If
Next i
' 输出汇总结果
summaryWS.Cells(1, 1) = "类别"
summaryWS.Cells(1, 2) = "汇总金额"
rowNum = 2
For Each key In dict.keys
summaryWS.Cells(rowNum, 1) = key
summaryWS.Cells(rowNum, 2) = dict(key)
rowNum = rowNum + 1
Next key
' 添加总计
summaryWS.Cells(rowNum, 1) = "总计"
summaryWS.Cells(rowNum, 2) = Application.WorksheetFunction.Sum(summaryWS.Range("B2:B" & rowNum - 1))
End Sub
Shell 脚本 (Linux)
#!/bin/bash
# CSV文件汇总脚本
FILE="sales_data.csv"
# 计算总销售额
total_sales=$(awk -F',' 'NR>1 {sum+=$3} END {print sum}' $FILE)
# 按部门汇总
echo "部门汇总报告"
echo "============"
awk -F',' 'NR>1 {
dept[$1] += $3
count[$1]++
} END {
for (d in dept) {
print d ": 总销售额=" dept[d] ", 订单数=" count[d]
}
}' $FILE
# 按月份汇总
echo ""
echo "月度汇总报告"
echo "============"
awk -F',' 'NR>1 {
split($2, date, "-")
month = date[1] "-" date[2]
monthly[month] += $3
} END {
for (m in monthly) {
print m ": " monthly[m]
}
}' $FILE
性能优化建议
大数据集处理
import pandas as pd
import dask.dataframe as dd
# 使用Dask处理大数据
ddf = dd.read_csv('large_data.csv')
# 分区计算
summary = ddf.groupby('category').agg({
'amount': ['sum', 'mean', 'count']
}).compute()
# 并行处理
from multiprocessing import Pool
def process_chunk(chunk_df):
return chunk_df.groupby('category')['amount'].sum()
# 分块处理
chunks = pd.read_csv('large_data.csv', chunksize=10000)
with Pool(4) as pool:
results = pool.map(process_chunk, chunks)
# 合并结果
final_result = pd.concat(results).groupby(level=0).sum()
内存优化
# 使用内存优化读取
dtypes = {
'category': 'category',
'amount': 'float32',
'date': 'datetime64[ns]'
}
df = pd.read_csv('data.csv', dtype=dtypes)
# 增量汇总
def incremental_summary(file_path):
summary = {}
for chunk in pd.read_csv(file_path, chunksize=5000):
for _, row in chunk.iterrows():
cat = row['category']
amount = row['amount']
if cat in summary:
summary[cat] += amount
else:
summary[cat] = amount
return summary
模板化脚本
# config.yaml
datasource:
type: csv
path: data.csv
delimiter: ','
columns:
group_by: category
value_cols: [amount, quantity]
aggregations:
- type: sum
columns: [amount, quantity]
- type: mean
columns: [amount]
- type: count
columns: [*]
output:
format: excel
path: summary_results.xlsx
# 通用汇总引擎
class SummaryEngine:
def __init__(self, config):
self.config = config
def run(self):
df = self.load_data()
result = self.aggregate(df)
self.save_result(result)
def aggregate(self, df):
group_col = self.config['columns']['group_by']
agg_dict = {}
for agg in self.config['aggregations']:
for col in agg['columns']:
if col == '*':
col = df.select_dtypes(include=[np.number]).columns
agg_dict[col] = agg['type']
return df.groupby(group_col).agg(agg_dict)
选择哪种方法取决于:
- 数据规模和复杂度
- 是否需要自动化运行
- 团队技术栈
- 实时性要求
建议从简单的 Python + Pandas 开始,逐步扩展功能。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播