python 数据分析基础一:csv文件处理(csv终章)(连接多个文件求均值与总值)

本章是csv文件处理的终章

重点在于对数据总值和均值的计算,虽为终章,但却并非结束,csv需要学习的东西还有很多

那么首先呢,我们学习这部分的时候,需要多个文件,博主会给你们提供一个下载的地址,大家可以在那里下载博主博客引用的所有文件
传送门
当然由于是外网github社区所以会比较慢,但是文件本身并没有特别大,所以小伙伴只需要等待片刻即可
三个文件:
在这里插入图片描述

利用基础python去处理

先上代码:

#基础Python 计算文件中值得的总值和均值
import csv
import glob
import os
input_path="E:\桌面\jupyter_lab"
out_file="the_first_csv.csv"
header_list=['file_name',"total_sales","average_sales"]
filewrite=open(out_file,"a+",newline="")
write_object=csv.writer(filewrite)
write_object.writerow(header_list)
for input_file in glob.glob(os.path.join(input_path,"sales_*")):#连接文件并实现遍历
    with open(input_file,"r",newline="") as fileread:#打开文件
        read_object=csv.reader(fileread)#创建读取对象
        out_list=[]#out_list需要承受写入的内容每一次文件的遍历都会刷新,重新记录数据
        out_list.append(os.path.basename(input_file))
        head=next(read_object)
        total_sales=0
        number_of_sales=0
        for row in read_object:
            sales_amount=row[3]
            total_sales+=float(str(sales_amount).strip('$').replace(",",""))
            number_of_sales+=1
        average_sales=("{0:2f}".format(total_sales/number_of_sales))
        out_list.append(total_sales)
        out_list.append(average_sales)
        write_object.writerow(out_list)
filewrite.close()

那么很明显,我们可以看到这是一段相对而已比较长的代码块了
很多人会这里产生厌烦,我们需要做的是将他一步一步分解,详解,让每个小伙伴都可以看懂😄
在前文解释过的内容这里会选择性的忽略

  1. head_list使我们需要加入的一行标题行,用于标明文件名,总值以及均值
  2. 使用glob,os模块对文件进行遍历之后,我们在每一次的遍历之下进行操作
  3. 我们在每一次操作的时候都需要创造一个空的列表,这个列表也就是代码中的out_list这个列表用来承受每一次我们需要添加到数据,那么很显然me一次的文件遍历都会刷新这个列表
  4. out_list.append(os.path.basename(input_file))这句代码将改文件名加入列表out_list中也就是我们需要加入的第一列数据。
  5. head=next(read_object) 我们将第一行,也就是 标题行 先遍历掉(我们需要使用的是标题行下的数据所以需要过滤掉)
  6. 接着我们需要创建两个变量去承接我们需要给处理的数据也就是total _sales and number_of_sales,均值average_sales便是total_sales/number_of_sales
  7. 在每一个文件内容的遍历中我们使用**total_sales+=float(str(sales_amount).strip(’$’).replace(",",""))**这段代码来进行一系列转化。其实很容易看懂,大家多看看即可,这里不必详解
  8. ** average_sales=("{0:2f}".format(total_sales/number_of_sales))这段代码的format函数**的用法是格式化输出的一种,博主在这里可以给大家一些拓展。
    拓展:
    在这里插入图片描述

利用pandas处理该问题

代码:

#pandas 计算文件中值的总值和平均pandas提供了用来计算行和列数据的统计摘要函数
#这里使用 pandas.DataFrame().sum() and padnas
import pandas as pd
import os
import glob
input_path="E:\桌面\jupyter_lab"
out_file="the_first_csv.csv"
all_files=glob.glob(os.path.join(input_path,"sales_*"))
all_data_frames=[]
for input_file in all_files:
    data_frame=pd.read_csv(input_file,index_col=None)
    total_sales=pd.DataFrame([float(str(value).strip("$").replace(",","")) for value in data_frame.loc[:,'Sale Amount']]).sum()
    average_sales=pd.DataFrame([float(str(value).strip("$").replace(",","")) for value in data_frame.loc[:,"Sale Amount"]]).mean()
    data={'file_name':os.path.basename(input_file),"total_sales":total_sales,"average_sales":average_sales}
    all_data_frames.append(pd.DataFrame(data,columns=["file_name","total_sales","average_sales"]))
data_frames_concat=pd.concat(all_data_frames,axis=0,ignore_index=True)
data_frames_concat.to_csv(out_file,mode="a+",index=False)#mode="a",就是追加的意思否则的话会覆盖

那么在代码的开头啊,博主也说了
pandas 计算文件中值的总值和平均pandas提供了用来计算行和列数据的统计摘要函数,这里使用 pandas.DataFrame().sum() and padnas 那么我们可以看到啊,其实pandas对于处理该问题并没有简化多少,而且里面很多函数是前文讲过的,不熟悉的小伙伴可以浏览一些一下博主以前的博客但对我们来说,画上个几分钟多会一个方法也并非是什么坏事,所以我也做一些简单的解说
重点在于sum函数和mean函数的用法,那么他们用法的格式是这样的
**pandas.DateFrame(参量).sum()**注意啊,这里我们的参量是

[float(str(value).strip("$").replace(",","")) for value in data_frame.loc[:,‘Sale Amount’]] 那么很明显呢,这是一个列表生成器,生成了一个列表,并且里面用到了loc函数(前文讲过loc函数),其余的东西在代码中大概已经已经标注,也不算博主偷懒😄 这些东西我本人觉得还是需要大家去自己思考,自己发现一些问题,有助于理解,ok,今天就到这了吧

over

那么csv文件暂时就到这里了,后面博主会开始excel内容的更新,同时一些前面剩下的问题的,需要渗透的内容呢,博主会慢慢的都讲解出来,同时博主还会不定期更新一些算法题,或难活简单都有,需要借鉴的小伙伴可以关注博主哦。

武汉加油 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值