python - 如何将 csv 文件读取为 json,然后将其作为列表读取并删除选定列表?
问题描述
我目前正在测试如何分析包含大量数据(如 30000 条记录)的大型 CSV 文件下图是我想提取“动画”、“戏剧”、“喜剧”等措辞的专栏的一部分.
我建议的步骤如下:
- 打开 CSV 文件并将其读取为 json?以便数据保存在列表中?
- 使用 for-loop 循环整个列(我不确定这部分)
- 删除列表?或提取措辞?
以下是 2 列,还有更多列,但我想先尝试提取单词。
样本数据:
[{'id': 16, 'name': 'Animation'}, {'id': 35, 'name': 'Comedy'}, {'id': 10751, 'name': 'Family'}]
[{'id': 12, 'name': 'Adventure'}, {'id': 14, 'name': 'Fantasy'}, {'id': 10751, 'name': 'Family'}]
[{'id': 10749, 'name': 'Romance'}, {'id': 35, 'name': 'Comedy'}]
[{'id': 35, 'name': 'Comedy'}, {'id': 18, 'name': 'Drama'}, {'id': 10749, 'name': 'Romance'}]
[{'id': 35, 'name': 'Comedy'}]
[{'id': 28, 'name': 'Action'}, {'id': 80, 'name': 'Crime'}, {'id': 18, 'name': 'Drama'}, {'id': 53, 'name': 'Thriller'}]
[{'id': 28, 'name': 'Action'}, {'id': 80, 'name': 'Crime'}, {'id': 18, 'name': 'Drama'}, {'id': 53, 'name': 'Thriller'}]
[{'id': 28, 'name': 'Action'}, {'id': 80, 'name': 'Crime'}, {'id': 18, 'name': 'Drama'}, {'id': 53, 'name': 'Thriller'}]
[{'id': 35, 'name': 'Comedy'}, {'id': 10749, 'name': 'Romance'}]
[{'id': 28, 'name': 'Action'}, {'id': 12, 'name': 'Adventure'}, {'id': 18, 'name': 'Drama'}, {'id': 10751, 'name': 'Family'}]```
解决方案
您的方法是正确的,但我会说它不会那么有效,而是您可以优化您的源代码以以适当的方式提供文件。
试试下面的代码,希望这会有所帮助。
import ast, json
import pandas as pd
from csv import reader
file_name = 'test_file.csv'
data = []
with open(file_name, 'r') as read_obj:
csv_reader = reader(read_obj)
headings = next(csv_reader)
for row in csv_reader:
data.extend(ast.literal_eval(row[0]))
df = pd.DataFrame(data)
out_df = df[df['name'].str.contains("Animation|Drama|Comedy")]
print(out_df)
我希望你可以从那里开始。
推荐阅读
- java - 这个类中使用的模式是什么?
- python - 全局变量和模块导入
- python - Cherrypy中的路由href
- docker - 前提:无法理解外部 ips 的工作原理
- node.js - 捕获错误 GRPC 14 UNAVAILABLE 服务不可用 NestJS
- ionic4 - 如何在 docdefination pdfmake 的内容中添加 ✓ 复选标记作为文本
- apache-zookeeper - 我们可以使用 zookeper 作为配置管理吗?
- javascript - 如何从底部显示Div的一些内容?
- python - 如何找到用于检测 aruco 标记的 Camera Matrix 和 Camera Distortion 文件?
- java - 如何通过 java swing 应用程序访问办公室本地服务器文件?