​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤

优点:

  • 方便,有专门支持读取csv文件的pd.read_csv()函数。
  • 将csv转换成二维列表形式
  • 支持通过列名查找特定列。
  • 相比csv库,事半功倍

1.读取csv文件

import pandas as pd
 
file="c:\data\test.csv"
csvPD=pd.read_csv(file)
 
df = pd.read_csv('data.csv', encoding='gbk') #指定编码
 
 
read_csv()方法参数介绍
filepath_or_buffer:文件所在路径
encoding :编码,字符型,通常为'utf-8',如果中文读取不正常,可以将encoding设为'gbk'
sep:分隔符,默认为一个英文逗号,即','
delimiter :备选分隔符,如果指定了delimiter则sep失效
header :整数或者由整数组成的列表,以用来指定由哪一列或者哪几列作为列名,默认为header=0,表示第一列作为列名
eg:  pd.read_csv('data.csv', encoding='gbk', header=1) # 指定第二列作为列名
     pd.read_csv('data.csv', encoding='gbk', header=[0,1,3])
     pd.read_csv('data.csv', encoding='gbk', header=None) #表示不从文件数据中指定行作为列名,这是Pandas会自动生成从零开始的序列作为列名
 
names:一个列表,为数据额外指定列名。
pd.read_csv('data.csv', encoding='gbk', names=['第一列', '第二列', '第三列', '第四列'])

2.#指定列:通过索引指定列名获取列

data_new[] 建立空表存储行信息
for i in range(len(csvPD)):
    lst_new = []  # 建立空列表存储行信息
    if "未知版本" in str(csvPD['版本组件'][i]):
        print(csvPD['版本组件'][i])
        # print(csvPD['匹配数量'][i])
        # print(csvPD['git'][i])
        # print(csvPD['来源链接'][i])
        lst_new.append(csvPD['版本组件'][i])
        lst_new.append(csvPD['匹配数量'][i])
        lst_new.append(csvPD['git'][i])
        lst_new.append(csvPD['来源链接'][i])
 
        data_new.append(lst_new)  # 添加每行信息

3.根据index查询

条件:首先导入的数据必须的有index
或者自己添加吧,方法简单,读取excel文件时直接加index_col

代码示例:

import pandas as pd                     #导入pandas库
 
excel_file = './try.xlsx'               #导入excel数据
data = pd.read_excel(excel_file, index_col='姓名')        
#这个的index_col就是index,可以选择任意字段作为索引index,读入数据
print(data.loc['李四'])                #使用loc函数来查找

4.已知数据在第几行找到想要的数据

假如我们的表中,有某个员工的工资数据为空了,那我们怎么找到自己想要的数据呢。

代码如下:

for i in data.columns:
    for j in range(len(data)):
        if (data[i].isnull())[j]:
            bumen = data.iloc[j, [0]]                             #找出缺失值所在的部门
            data[i][j] = charuzhi(bumen)

首先检索全部的数据,然后我们可以用pandas中的iloc函数。上面的iloc[j, [2]]中j是具体的位置,【0】是你要得到的数据所在的column

"""根据条件查询某行数据"""
import pandas as pd            #导入pandas库
 
excel_file = './try.xlsx'        #导入文件
data = pd.read_excel(excel_file)      #读入数据
 
print(data.loc[data['部门'] == 'A', ['姓名', '工资']])     #部门为A,打印姓名和工资
print(data.loc[data['工资'] < 3000, ['姓名','工资']])    #查找工资小于3000的人

若要把这些数据独立生成excel文件或者csv文件:

添加以下代码:

"""导出为excel或csv文件"""
dataframe_1 = data.loc[data['部门'] == 'A', ['姓名', '工资']]
dataframe_2 = data.loc[data['工资'] < 3000, ['姓名', '工资']]
dataframe_1.to_excel('dataframe_1.xlsx')
dataframe_2.to_excel('dataframe_2.xlsx')
 
data.iloc[:,:2]  #即全部行,前两列的数据
 
 
data['columns']  #columns即你需要的字段名称即可
#注意这列的columns不能是index的名称
#如果要打印index的话就data.index
data.columns  #与上面的一样
 
data.iloc[:10,:][data.工资>6000] #找出前11行里工资大于6000的所有人的信息了

5.指定单元格:1001A列23时的AQI值

keyWord="1001A"
for i in range(len(csvPD)):
    if str(csvPD['hour'][i])=="23" and str(csvPD['type'][i])== "AQI":
        result=csvPD[keyWord][i]
        print(result)
        

解决遇到的"NAN":

  • csv文件中:1001A站点0时的AQI为空白值,返回的结果为NAN
  • NAN全称:Not A Number

常规解决思路:

使用numpy函数来判断:np.isnan()xxx is np.nan
通过运算操作判断:任何数字乘上0都是0
读取文件时加参数:pd.read_csv(file, keep_default_na=False)

操作结果如下图:

  • 1.推荐使用np.isnan()csvPD["1002A"][0] is np.nan显示为Flase
  • 2.推荐使用nan*0之后仍是nan,而不是0
  • 3.加了参数后,输出的所有数据类型变为str,nan变为空值,len(result)=0。

到此这篇关于​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤的文章就介绍到这了,更多相关​python中pandas读取csv文件 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决Python中pandas读取*.csv文件出现编码问题

    1.问题 在使用Python中pandas读取csv文件时,由于文件编码格式出现以下问题: Traceback (most recent call last): File "pandas\_libs\parsers.pyx", line 1134, in pandas._libs.parsers.TextReader._convert_tokens File "pandas\_libs\parsers.pyx", line 1240, in pandas._libs

  • 使用pandas生成/读取csv文件的方法实例

    前言 csv是我接触的比较早的一种文件,比较好的是这种文件既能够以电子表格的形式查看又能够以文本的形式查看. 先引入pandas库 import pandas as pd 方法一: 1.我构造了一个cont_list,结构为列表嵌套字典,字典是每一个样本,类似于我们爬虫爬下来的数据的结构 2.利用pd.DataFrame方法先将数据转换成一个二维结构数据,如下方打印的内容所示,cloumns指定列表,列表必须是列表 3.to_csv方法可以直接保存csv文件,index=False表示csv文件

  • 使用实现pandas读取csv文件指定的前几行

    用于存储数据的csv文件有时候数据量是十分庞大的,然而我们有时候并不需要全部的数据,我们需要的可能仅仅是前面的几行. 这样就可以通过pandas中read_csv中指定行数读取的功能实现. 例如有data.csv文件,文件的内容如下: GreydeMac-mini:chapter06 greyzhang$ cat data.csv ,name_01,coment_01,,,, 2,name_02,coment_02,,,, 3,name_03,coment_03,,,, 4,name_04,co

  • pandas读取csv文件提示不存在的解决方法及原因分析

    一般情况是数据文件没有在当前路径,那么它是无法读取数据的.另外,如果路径名包含中文它也是无法读取的. (1)可以选择: import os os.getcwd() 获得当前的工作路径,把你的数据文件放在此路径上就可以了,就可以直接使用pd.read_csv("./_.csv") (2)可以选择: 使用os.chdir(path),path是你的那个数据文件路径 (3)可以选择: 不更改路径,直接调用df=pd.read_csv(U"文件存储的盘(如C盘) :/文件夹/文件名.

  • 使用Python pandas读取CSV文件应该注意什么?

    示例文件 将以下内容保存为文件 people.csv. id,姓名,性别,出生日期,出生地,职业,爱好 1,张小三,m,1992-10-03,北京,工程师,足球 2,李云义,m,1995-02-12,上海,程序员,读书 下棋 3,周娟,女,1998-03-25,合肥,护士,音乐,跑步 4,赵盈盈,Female,2001-6-32,,学生,画画 5,郑强强,男,1991-03-05,南京(nanjing),律师,历史-政治 如果一切正常的话,在Jupyter Notebook 中应该显示以下内容:

  • pandas读取csv文件,分隔符参数sep的实例

    在python中读取csv文件时,一般操作如下: import pandas as pd pd.read_csv(filename) 该读文件方式,默认是以逗号","作为分割符,若是以其它分隔符,比如制表符"/t",则需要显示的指定分隔符.如下 pd_read_csv(filename,'/t') 但如果遇见某个字段包含了"/t"的字符,比如网址"www.xxx.xx/t-",则也会把字段中的"/t"理解为

  • ​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤

    优点: 方便,有专门支持读取csv文件的pd.read_csv()函数. 将csv转换成二维列表形式 支持通过列名查找特定列. 相比csv库,事半功倍 1.读取csv文件 import pandas as pd   file="c:\data\test.csv" csvPD=pd.read_csv(file)   df = pd.read_csv('data.csv', encoding='gbk') #指定编码     read_csv()方法参数介绍 filepath_or_buf

  • 如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas as pd # 我们的需求是 取出所有的姓名 # test1的内容 ''' id name score 1 张三 100 2 李四 99 3 王五 98 ''' test1 = pd.read_table("test1.txt") # 这个是带有标题的文件 names = test1[&

  • Python如何读取csv文件时添加表头/列名

    目录 读取csv文件时添加表头/列名 解决方法 更改csv文件表头 读取csv文件时添加表头/列名 有时,我们读取的csv文件数据时发现没有表头/列名,是因为Python读取csv文件数据本来就没有表头,用pandas.read读取时,则第一行自动会被识别为columns,从而给后面的分析造成不便,这时候需要我们在读取文件数据的同时添加列名. 解决方法 1.在读取文件数据之后再定义列名 df = pd.read_csv('评论.csv',header=None) df.columns = ["昵

  • pandas读取CSV文件时查看修改各列的数据类型格式

    下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述: 我们在调bug的时候会经常查看.修改pandas列数据的数据类型,今天就总结一下: 1.查看: Numpy和Pandas的查看方式略有不同,一个是dtype,一个是dtypes print(Array.dtype) #输出int64 print(df.dtypes) #输出Df下所有列的数据格式 a:int64,b:int64 2.修改 import pandas as pd import numpy a

  • python 使用pandas读取csv文件的方法

    目录 pandas读取csv文件的操作 1. 读取csv文件 在这里记录一下,python使用pandas读取文件的方法用到pandas库的read_csv函数 # -*- coding: utf-8 -*- """ Created on Mon Jan 24 16:48:32 2022 @author: zxy """ # 导入包 import numpy as np import pandas as pd import matplotlib.

  • python的pandas工具包,保存.csv文件时不要表头的实例

    用pandas处理.csv文件时,有时我们希望保存的.csv文件没有表头,于是我去看了DataFrame.to_csv的document. 发现只需要再添加header=None这个参数就行了(默认是True), 下面贴上document: DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=Non

  • python读csv文件时指定行为表头或无表头的方法

    pd.read_csv()方法中header参数,默认为0,标签为0(即第1行)的行为表头.若设置为-1,则无表头.示例如下: (1)不设置header参数(默认)时: df1 = pd.read_csv('target.csv',encoding='utf-8') df1 (2)header=1时: import pandas as pd df2 = pd.read_csv('target.csv',encoding='utf-8',header=1) df2 (3)header=-1时(可用

  • python 利用pandas将arff文件转csv文件的方法

    直接贴代码啦: #coding=utf-8 import pandas as pd def arff_to_csv(fpath): #读取arff数据 if fpath.find('.arff') <0: print('the file is nott .arff file') return f = open(fpath) lines = f.readlines() content = [] for l in lines: content.append(l) datas = [] for c i

  • Python 中pandas索引切片读取数据缺失数据处理问题

    引入 numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等 比如:我们通过爬虫获取到了存储在数据库中的数据 比如:之前youtube的例子中除了数值之外还有国家的信息,视频的分类(tag)信息,标题信息等 所以,numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我

随机推荐