【Python】txt奇数行添加字段+csv查找范围内数据

本文讲述了如何使用Python的pandas库从CSV文件中筛选出中国特定经纬度范围的数据,包括读取文件、解决导入错误和使用.loc方法进行条件筛选。过程中提到了文件路径处理、pandas模块导入问题以及Excel导出的模块安装。
摘要由CSDN通过智能技术生成

我可以嚣张宣布,我终于3级了hhhh。添加文章标签的时候终于可以随心所欲了,这是我唯一想要的点。


奇数行添加字段

这个其实分析和搜索一下,涉及到的一个关键知识点就是:Python文件读取写入操作
基础的过程已经在前面莫烦老师视频有。
另外参考这几个链接:
博客园wind1004:Python-文件读写及修改

CSV查找范围内数据

1 读入csv数据

参考链接:
易百数据:Python处理CSV数据
CSDNpy风之老凌:python之csv文件处理(基础)
.runoob.com:Pandas CSV 文件

我自己的数据就不放了,万来行,这里有个从runoob下的nba.csv
加载代码

import pandas as pd  #我估摸着这是个规定句式
data=pd.read_csv('D:\Yan\Python\nba.csv') 
print(data)

报错:AttributeError: partially initialized module ‘pandas’ has no attribute ‘read_csv’ (most likely due to a circular import)
找了一个链接,说是因为命名跟系统特有的重复。我,确实,这个py命名为csv.py了,我有罪。
CSDN:AttributeError: module ‘pandas’ has no attribute 'read_csv ’解决方法

改名字之后又遇见一个错误

OSError: [Errno 22] Invalid argument: ‘D:\Yan\Python\nba.csv’
又去搜索,CSDN:Python OSError: [Errno 22] Invalid argument:的解决办法
为什么报错呢,因为文件路径格式不对

#正确代码
import sys
import pandas as pd
data=pd.read_csv('D:\\Yan\\Python\\nba.csv')  #看见没,双斜杠\\
print(data)

另外,根据参考链接.runoob.com:Pandas CSV 文件,还可以用to_string() 用于返回 DataFrame 类型的数据

import sys
import pandas as pd

data=pd.read_csv('D:\\Yan\\Python\\nba.csv')
print(data.to_string())  #就这里不一样

鼠标移到IDLE会提示你,双击可以扩展,右击可选浏览。而扩展又会提示你,文件比较大,会使得IDLE运行卡顿或变慢,建议你不要搞
另,关于dataframe,大概就是pandas的一种数据结构,像表一样,可存数字,字符串等等Pandas 库之 DataFrame - 败北桑 - 博客园
在这里插入图片描述

2 读取指定列

易百数据:Python处理CSV数据 这个链接读取行、列和特定行列,比较基础,可以用来了解.loc用法。不过这里的【特定】其实是自己指代的,和我的需求不符
CSDN用户Westin_Li:python下pandas库中读取指定行或列数据(excel或csv) 这个就比较符合了,通过筛选

我的目的是筛选出在中国经纬度范围内的数据:
Latitude:73°29’59.79"E至135°2′30’’E;
Longitude:3°31‘00’N至53°33′N;
再换算一下为小数点:
Latitude:73.4999-135.0417
Longitude:3.5167-53.55

import sys
import pandas as pd

data=pd.read_csv('D:\\Yan\\Python\\保护隐私不放了.csv')
print(data)

dataframe=data.loc[(data['lon']>3.05)&(data['lon']<53.8833)&(data['lat']>74.2167)
                   &(data['lat']<137.25)]  #可以看见我把经纬度限制在了前面转换的数据范围里
dataframe.to_excel('dataframe.xlsx')  #导出为xlsx,这里我缺模块,见下说明
print(dataframe)  #或者直接输出

选择导出为xlsx报错:ModuleNotFoundError: No module named ‘openpyxl’
原因:我没装这个模块,cmd命令装一下
在这里插入图片描述

然而还是出错啦。
显示我,没有符合条件的数据emmm。我觉得前面的经纬度铁定错了,淦。改了经纬度,还是没有,不整了,23:51,睡觉睡觉。
另外,【待解决】💗💙💚💛💜💝
原csv表格只有5列。我不懂怎么我这里输出后变成了6列

在这里插入图片描述

### 回答1: 可以使用以下Python代码来读取CSV文件的单,并求和第三列:import csv total = 0 with open('data.csv') as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') line_count = 0 for row in csv_reader: if line_count == 0: line_count += 1 else: total += int(row[2]) line_count += 1 print(total) ### 回答2: 要用Python读取csv文件中的奇数并求和第三列,可以使用以下程序: ```python import csv def sum_odd_rows_third_col(filename): with open(filename, 'r') as file: reader = csv.reader(file) rows = [row for idx, row in enumerate(reader) if idx % 2 != 0] # 仅获取奇数 # 检查是否有足够的 if len(rows) == 0: return 0 # 没有奇数时返回0 # 求和第三列 total = sum(float(row[2]) for row in rows) return total # 示例用法 filename = 'data.csv' # 替换为真实的csv文件路径 result = sum_odd_rows_third_col(filename) print('奇数第三列的和为:', result) ``` 上述程序首先使用`csv.reader`模块来读取csv文件。然后,我们使用列表推导式选择奇数,通过`enumerate(reader)`获取每一及其对应的索引,`idx % 2 != 0`用于判断是否为奇数。 接下来,程序检查是否有足够的奇数。如果没有奇数,就返回0作为求和结果。 最后,我们使用另一个列表推导式来提取所选的第三列,并使用`sum()`函数对其求和。计算完成后,求和结果被返回并输出。 在使用上述程序时,需要将`filename`替换为真实的csv文件路径。 ### 回答3: 可以使用Pythoncsv模块来读取csv文件,并遍历文件的单数,然后将对应的第三列进求和。 以下是一个示例程序: ```python import csv def read_csv_and_sum_third_column(filename): sum = 0 with open(filename, 'r') as file: reader = csv.reader(file) for i, row in enumerate(reader): # 由于数从0开始计数,所以这里使用i+1来判断是否为单数 if (i+1) % 2 == 1: sum += int(row[2]) # 假设第三列为整数 return sum filename = 'data.csv' # 替换为你的csv文件路径 sum = read_csv_and_sum_third_column(filename) print("单数第三列的和为:", sum) ``` 请注意将程序中的`data.csv`替换为你实际的csv文件路径,并且假设第三列的数据为整数。如果第三列数据类型不是整数,可以根据需要进相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值