python 数据分析基础一:csv文件处理(2.5)

前文讲到了利用pandas去处理一些属性匹配的问题
本篇博文的重点在于利用pandas去处理一些列问题,以及一些对于行问题的处理

那么我们还是利用之前的csv模板,如图:
在这里插入图片描述
赠上下载地址

1.利用基础python 根据列索引值,引入csv文件

代码:

#利用基础python处理 利用列索引值
import csv
index_list=[0,2]
input_file="supplier_data.csv"
out_file="the_first_csv.csv"
with open(input_file,"r",newline="") as file_read:
    with open(out_file,"w",newline="") as file_write:
        filereader=csv.reader(file_read)#创建读取对象
        filewriter=csv.writer(file_write)#创建写入对象
        for row_list in filereader:
            row=[]#每一次创建一个空的可用的列表
            for index in index_list:
                row.append(row_list[index])
            #print(row)
            filewriter.writerow(row)

那么我们依然是要利用csv模块,所以先行引用模块 import csv
代码非常简单,重点就在于后半部分的两个for
1.for:我们用一个占位符 row_list 作为在filereader每一次迭代的对象,这个row_list是一个列表,前文已经讲过了,filereader其实就是一系列列表
,且每次迭代我们都会创建一个新的空列表,这个列表是为了承受需要写入目的文件的内容而存在的。
2.for:第二个for循环目的是将我们需要的索引内容添加到row中
alright,很简单的代码也很容易理解

2.利用pandas模块,处理列索引值的问题

代码:

#利用pandas模块处理 列索引值
import pandas as pd
input_file="supplier_data.csv"
out_file="the_first_csv.csv"
input_frame=pd.read_csv(input_file)
index_frame=input_frame.iloc[:,[1,2]]#iloc()的用法:iloc([index_row_list],[index_line_list]):(前者为行的索引列表,后者为列的索引列表)
index_frame.to_csv(out_file,index=False)  

这里涉及到一些新的函数,没关系,我们慢慢来。
首先,read_csv与to_csv前文已经讲过了。这里不需要再讲。
我们重点在于iloc函数

iloc()函数:
这里的i是integer: 整数,那么很明显iloc函数,的参数只能是整数。它的两个参量iloc(1,2):第一个参量是行的索引列表,第二个参量是列的索引列表。

这段代码的结果如下:
在这里插入图片描述
我们这里的写法是index_frame=input_frame.iloc[:,[1,2]]前面是冒号其实是全部行的意思,而后面就是索引1和索引2的列。
这里我们改成
index_frame=input_frame.iloc[[1,2]:,[1,2]]

那么结果便如下:
在这里插入图片描述
很容易理解,抽取索引为1,2的行。这段代码也差不多了

3.基础python利用列“标题”来选取特定列

上代码:

#基础python使用列标题来,选取特定列
import csv
input_file="supplier_data.csv"
out_file="the_first_csv.csv"
columns_list=["Invoice Number","Part Number"]
my_columns_index=[]
with open(input_file,"r",newline="") as fileread:
    with open(out_file,"w",newline="") as filewrite:
        filereader=csv.reader(fileread)
        filewriter=csv.writer(filewrite)
        head=next(filereader)
        for index in range(len(head)):
            if head[index] in columns_list:
                my_columns_index.append(index)
        filewriter.writerow(columns_list)
        for row_list in filereader:
            a_row=[]
            for index in my_columns_index :
                a_row.append(row_list[index])
            filewriter.writerow(a_row)
#这里出现了一些小差错,不过没关系,我已经解决了,很显然我们使用基础python来选取列目标会很麻烦,倒不如pandas来的更方便一点,但是基础还是得掌握

那么很明显,一看代码就知道麻烦。我们大概分析一下,我们如要要根据列标题来选定列的话,首先我们需要把需要选定的列的属性写在文件头吧,继而我们要通过还要把属于这一列的每一行的内容去筛选出来吧,那么我们必须利用索引了。
第三行:我们把需要筛选出来的列标题放在一个列表里面
第十行往后:我们添加标题的代码与之前稍有不同,但可以看得懂,我们利用索引去我们需要的标题写入文件
两个for循环:第一个for循环,是使占位符row_list在模板的数据行开始遍历,第二个for循环,我们利用之前的索引,把我们需要的数据都添入我们每一次需要的空列表,在使用writerow函数写入目标文件。
ok,很清楚了

利用pandas 利用列标题选取特定列

上面我们已经看到了,利用基础python真的是非常的麻烦,所以我个人还是建议利用pandas
代码:

#pandas使用列标题来选取特定列(优于基础python)
import pandas as pa
input_file="supplier_data.csv"
out_file="the_first_csv.csv"
data_frame=pd.read_csv(input_file)
data_frame_bn=data_frame.loc[:,['Invoice Number',"Part Number"]]#loc()根据属性分类
data_frame_bn.to_csv(out_file,index=False)
#很显然pandas处理起来较为方便,这都不是较为方便了,很显然pandas处理起来很方便,我们可以看到代码会简短很多

非常简短。
代码里面很多内容之前已经讲过,我们这里只需要重点讲到一个东西:
loc函数:
loc函数:与iloc不同的地方在于,loc函数不会被interge(整形)限制
如图:
在这里插入图片描述
alright finished

今天的任务就到这里了,要继续学习数据分析这块的,可以关注博主哦,共勉

武汉加油

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值