如何修改Python代码读取CSV垂直列数据并统计三元组模式?
读取CSV列数据并统计连续三元组模式的修改方案
你只需要把手动定义的data列表替换为从CSV文件读取的列数据,以下是两种实用修改方法:
方法1:用Python内置csv模块(无需额外安装依赖)
完整代码如下,核心是读取CSV指定列并转为列表,原统计逻辑完全保留:
import csv # 从CSV读取目标列数据到列表 data = [] # 替换成你的CSV文件实际路径,比如'./my_data.csv' with open('your_data.csv', 'r', newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) # 如果CSV文件没有表头,删掉这一行 next(reader) for row in reader: # 取每行第一列数据,要读其他列就改索引(第二列是row[1]) if row: # 跳过空行避免报错 data.append(row[0]) # 以下是原统计逻辑,无需修改 pattern_counts = {} for i in range(len(data)-2): pattern = str(data[i]) + str(data[i+1]) + str(data[i+2]) if pattern in pattern_counts: pattern_counts[pattern] += 1 else: pattern_counts[pattern] = 1 for pattern, count in pattern_counts.items(): print("{}: {}".format(pattern, count))
方法2:用pandas库(代码更简洁,需先执行pip install pandas安装)
如果习惯用数据分析工具,pandas能更高效处理列数据:
import pandas as pd # 读取CSV文件,替换为你的文件路径 df = pd.read_csv('your_data.csv') # 替换为目标列的列名,比如'value_col';用df.iloc[:,0]可直接按索引取第一列 data = df['value_col'].dropna().tolist() # dropna()自动过滤空值 # 原统计逻辑完全保留 pattern_counts = {} for i in range(len(data)-2): pattern = str(data[i]) + str(data[i+1]) + str(data[i+2]) if pattern in pattern_counts: pattern_counts[pattern] += 1 else: pattern_counts[pattern] = 1 for pattern, count in pattern_counts.items(): print("{}: {}".format(pattern, count))
内容的提问来源于stack exchange,提问作者Paul Adeleke
相关产品推荐
相关产品推荐

