如何用S3命令下载Electronics类别文件并进行本地CSV特定类别分析?
仅处理S3中Electronics类别CSV文件的方法
1. 批量下载S3里的Electronics类别文件
直接用AWS CLI就能批量捞取所有符合命名规则的文件,不用一个个手动下载:
aws s3 cp s3://records/ ./local-electronics/ --recursive --exclude "*" --include "Electronics-*.csv"
--recursive:递归遍历S3桶里的所有文件--exclude "*":先排除所有文件--include "Electronics-*.csv":只保留以Electronics-开头的CSV文件,下载到本地local-electronics文件夹
2. 本地分析Electronics类别CSV内容
方法1:用awk快速做基础筛选/统计
如果只是快速看数据或者做简单统计,awk足够用:
- 筛选所有属于Electronics类别的行(假设CSV第一列是category字段):
awk -F ',' '$1 == "Electronics"' Electronics-*.csv
- 统计该类别下的总产品数:
awk -F ',' '$1 == "Electronics" {count++} END {print count}' Electronics-*.csv
方法2:用csvkit做专业CSV处理
csvkit是专门处理CSV的命令行工具,功能更全,先装一下:
pip install csvkit
- 查看单个CSV的字段统计信息:
csvstat Electronics-123.csv
- 筛选Electronics行并保存到新文件(指定category列匹配):
csvgrep -c category -r "^Electronics$" Electronics-*.csv > filtered-electronics.csv
- 统计产品ID的数量(需要去重就加
| uniq | wc -l):
csvcut -c productid filtered-electronics.csv | wc -l
方法3:用Python做复杂分析
如果要做更深入的分析(比如按价格分段、关联其他数据),写个简单脚本就行:
import csv import glob total_products = 0 price_ranges = {"0-100": 0, "101-500": 0, "500+": 0} # 遍历所有下载的Electronics CSV文件 for file in glob.glob("./local-electronics/Electronics-*.csv"): with open(file, 'r', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: # 双重验证类别(避免文件名有误的情况) if row.get('category') == 'Electronics': total_products += 1 # 示例:统计价格区间 price = float(row.get('price', 0)) if price <= 100: price_ranges["0-100"] += 1 elif price <= 500: price_ranges["101-500"] += 1 else: price_ranges["500+"] += 1 print(f"Electronics类别总产品数:{total_products}") print("价格区间分布:") for range_name, count in price_ranges.items(): print(f"{range_name}: {count}")
内容的提问来源于stack exchange,提问作者prashant bari
相关产品推荐
相关产品推荐

