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

前文已经说过如何去通过基础python处理csv文件的行,一系列的问题
本篇博文重点为利用pandas模块去较为简单地处理这些复杂的问题

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

python pandas模块:

我们在前文已经看到了,我们对于数据分析及处理的任务,使用基础python很费力,因此已经有前辈为我们开发好了工具。对数据处理及分析,对pandas模块的学习必不可少,一般python3.x 下载时,应该会带有pandas模块,我们只需引用即可,当然也有特殊情况,所以:
下载:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas==0.20.0
我们在命令行输入这个命令即可下载。
那么前文已经说过了利用pandas处理csv文件,pandas含有一种数据框的模式,这种模式保留了表格的形式,应该可以较为方便的处理

1.pandas 对csv文件的复制

代码:

import pandas as pd
input_file="supplier_data.csv"
out_file="the_first_csv.csv"
date_frame=pd.read_csv(input_file)#frame:框架,架构
#print(date_frame)
date_frame.to_csv(out_file,index=False)#index=False 表示输出不显示索引值

代码比起使用基础python来说非常的简短,当然也需要去记忆一些新的函数。这些对于使用pandas来说都是必要的。
两个函数;

  1. pandas.read_csv():这个函数可以返回参量csv文件的数据框。

数据框:用于储存多行多列数据的一种结构

  1. pandas.to_csv():一般用法的话就是 :pandas.to_csv(write_object,index=False) 其中,前参量是写入文件
    后参量的意思是 不显示索引,如果我们现实索引的话,在我们写入文件的第一列往往会多出一行0,1,2…如图:
    在这里插入图片描述
    代码的意思很简洁,就是把第一个文件中的数据框取出来,放到第二个文件里面,这样理解就够了

pandas模块对行操作的应用

我们使用基础python必须把他们一系列的列表提取出来,进行判断与操作
而pandas则更为方便

  1. 利用pandas模块,使行中的值属于某个集合
    代码
import pandas as pd
date_list=['1/30/14','1/20/14']
input_file="supplier_data.csv"
out_file="the_first_csv.csv"
script_frame=pd.read_csv(input_file)
date_frame=script_frame.loc[script_frame['Purchase Date'].isin(date_list),:]#isin()函数
date_frame.to_csv(out_file,index=False)

前五行不做详解,重点在第六行:
loc()函数与isin()函数

loc()函数 pandas模块的loc函数,可以实现对行和列的一系列操作loc()函数的两个参量loc(1,2)参量1表示对行的操作,而参量2表示对列的操作。

我们这里需要引用名为:"Purchase Date"的这一列的变量,我么使用类似于字典键的方式去引用。这样可以引用,其实是这么一个结构,如图:
在这里插入图片描述
可以看到,每一个数据前都有索引的存在,这也顺便清楚了前面的index=Fasle存在的疑惑
isin函数:其实就是判断这里面的每一行数据是否存在于这个列表中。
而一旦存在的话,便利用loc函数将这样一个数据框提取出来。
2. 利用pandas模块判断,行中的值匹配某个模式或者正则表达式
代码:

#利用pandas模块 loc()函数 使行中的值匹配某个模式或者正则表达式
import pandas as pa
input_file="supplier_data.csv"
out_file="the_first_csv.csv"
script_frame=pd.read_csv(input_file)#从csv文件中读出数据框结构
date_frame=script_frame.loc[script_frame['Invoice Number'].str.startswith("001-"),:]
date_frame.to_csv(out_file,index=False)
#starswith与endswith
#三个参量((strs),start,end)  start与end是索引,用于判断位置

那么这里的第五行又出现了新花样:
date_frame=script_frame.loc[script_frame[‘Invoice Number’].str.startswith(“001-”),:]
前面的不做详解。重点在这一行。我们这里的标题是,使行中的值可以匹配某种模式或者正则表达式。这里是 模式,这里我的目的是,提取出"Invoice Number"中前三个字符符合"001-"的格式。依然使用loc函数,但是后面我们使用了 .str.startswith 的格式

详解及拓展:
str.startswith()是用于检测字符串是否以指定的前缀开始
str.startswith(substr, beg=0,end=len(string));
*str:判断的字符串
*substr:用于检测的子字符串
*beg:开始的索引位置
*end:结束的位置
endwith函数
str.endwith(substr,start,end)
*str:同上
*****都同上

ok 由于本人对于正则表达式的学习尚浅,不能很清楚的讲出来,所以不在这一篇博文中做讲解,后面会讲到,今天就到这里

武汉加油

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值