您的位置:澳门新葡8455最新网站 > 编程教学 > Python数据分析基础ReadingDay3_csv读写,read_csv函数参

Python数据分析基础ReadingDay3_csv读写,read_csv函数参

发布时间:2019-10-06 15:45编辑:编程教学浏览(173)

    pandas用于读取数据十二分有支持,包蕴众多一贯将数据源读取为DataFrame的函数,上面以read_csv函数为例子说圣元下有个别参数的意思。 pandas读取csv格式函数参数相当多,一些参数上的设置就足以幸免本身再去编写一些万分管理仍旧重新的代码逻辑了,譬喻在那之中第二个路子参数能够直接放csv文件的互联网地址,十分惠及。

    reading Foundations for Analysis with Python

    pandas.read_csv( filepath_or_buffer, #1.文件handle;2.StringIO对象;3. 文件路径string;#4.URL,包括http、ftp、file,例如(file://localhost/path/to/table.csv sep=', ', #分隔符,需要注意的是engine='c'时候不能自动检测分隔符,而engine='python'可以,用的是csv.Sniffer,#长度大于1的分隔符按正则表达式处理,强制使用engine='python' delimiter=None, #和sep参数类似 header='infer', #被用作列名的行的编号,默认参数的意思为:如果没有names参数,则认为第一行认为是列名,即header=0#设置header=0会覆盖下面的names参数。 names=None, #列名的list,会被去重处理 index_col=None, usecols=None, #类型为列表,列表元素可以是列名,也可以是列是第几列的数字。列表中元素的顺序不起作用。 squeeze=False, prefix=None, mangle_dupe_cols=True,# 重复的列名将会被设置为‘X’, ‘X.1’, …’X.N’的形式,传入False会使重复列名的数据被覆盖掉。 dtype=None, #列数据类型,传入字典,{列名:类型},类型可以使用numpy的数据类型 engine=None, #解析数据的引擎,注意选择engine='c'时文件路径中不要有中文,而且很多参数设置在选择'c'时候不起作用。 converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, #要读多少行,超过内存的大文件处理时可以用到 na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, #由于字段数太多等引起异常默认被抛出,而且没有返回,可以设置为False,这样就会扔掉这些错误的数据,然后得到不包含错误行的DataFrame warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)
    

    图片 1

    有关数据的获得,编制程序情状的设置,本地数据文件的下载,以及对文中的问号,扫码进群可能关心民众号就能够直接向笔者提问。

    foundationsForAnalyWithPyBookCover.png

    转发请评释作品来源

    那篇笔记首要讲csv文件的读取和写入,还会有读取后对数码进行的拍卖。在上一篇笔记里,用两段代码作为例子简单表明了文件文件的读写,回想请戳Python数据分析基础ReadingDay2_容器,csv也是一种文本文件,《Python数据深入分析基础》中说:

    图片 2注意金融数据深入分析的众生号图片 3python数据深入分析群二维码

    CSV(comma-separated value,逗号分隔值)文件格式是一种特别轻便的数量存款和储蓄与共享 形式。CSV 文件将数据表格存款和储蓄为纯文本,表格(或钟表格)中的每一个单元格都以一个数值或字符串。

    切切实实有关csv的介绍能够参见百科。

    程序管理的相似为内部存款和储蓄器中的多寡,那样程序运转完之后数据就消灭了,由此平日对于第一的数据会将其保存为文件等物理格式。文件的读写对于数据分析是极度首要的,《Python数据分析基础》的第二章通过有些实际的代码讲了csv文件的读写,全部思路为:普通模式读写csv文件、用csv库读写、用pandas库读写、读写多少步入内部存款和储蓄器后的数量筛选和总结量总计。本篇笔记沿用那个思路。

    目录

    • 平常情势读写csv
    • 用csv库读写
    • pandas库读写
    • 读入后的数量管理

    见惯不惊格局读写

    读写文件的总体流程是:开荒文件-->按行读入数据-->全体或部分保存到容器中-->关闭文件-->对内部存款和储蓄器中的数码开展剖析。为了表明和调用的惠及,上面包车型大巴亲自去做代码多打包为函数。 本篇笔记使用的数量可以在《Python数据解析基础》GitHub收获。重要选拔的csv文件名字为:supplier_data.csv

    在Excel 2014中张开和Notepad++中开垦效果分别为:

    图片 4

    supplier_data_pic.png

    #普通方式读取supplier_data.csv 并写入一个叫 s_csv_data.csv的文件
    def generalWayRcsv(in_fname,out_fname):
        #传入的参数分别为输入的文件路径,输出文件路径
        with open(in_fname,'r',encoding='UTF-8') as freader:  #读入
            with open(out_fname,'w') as fwriter:
                header = freader.readline() #读取首行
                header = header.strip() 
                header_list = header.split(',') 
                print(header_list) 
                fwriter.write(','.join(map(str,header_list))+'n') 
                for row in freader: 
                    row = row.strip() 
                    row_list = row.split(',') 
                    print(row_list) 
                    fwriter.write(','.join(map(str,row_list))+'n')
        print('end')
    in_f="supplier_data.csv"
    out_f="s_csv_data.csv"
    generalWayRcsv(in_f,out_f) #如果报错注意路径或文件编码问题
    

    out:

    ['Supplier Name', 'Invoice Number', 'Part Number', 'Cost', 'Purchase Date']
    ['Supplier X', '001-1001', '2341', '$500.00', '1/20/14']
    ['Supplier X', '001-1001', '2341', '$500.00', '1/20/14']
    ['Supplier X', '001-1001', '5467', '$750.00', '1/20/14']
    ['Supplier X', '001-1001', '5467', '$750.00', '1/20/14']
    ['Supplier Y', '50-9501', '7009', '$250.00', '1/30/14']
    ['Supplier Y', '50-9501', '7009', '$250.00', '1/30/14']
    ['Supplier Y', '50-9505', '6650', '$125.00', '2/3/14']
    ['Supplier Y', '50-9505', '6650', '$125.00', '2/3/14']
    ['Supplier Z', '920-4803', '3321', '$615.00', '2/3/14']
    ['Supplier Z', '920-4804', '3321', '$615.00', '2/10/14']
    ['Supplier Z', '920-4805', '3321', '$615.00', '2/17/14']
    ['Supplier Z', '920-4806', '3321', '$615.00', '2/24/14']
    end
    

    从以上代码能够见见读取csv的流程为:展开文件-->按行读入数据并按逗号切分字符串为列表(-->写入数据)

    用csv库读写

    csv是二个松开的Python库,通过 import csv引用。它能够很好地管理csv文件。

    import csv
    def csvLibRWdata(in_fname,out_fname):
        with open(in_fname, 'r', newline='') as csv_in_file: 
            with open(out_fname, 'w', newline='') as csv_out_file: 
                filereader = csv.reader(csv_in_file, delimiter=',') 
                filewriter = csv.writer(csv_out_file, delimiter=',') 
                for row_list in filereader:
                    print(row_list)
                    filewriter.writerow(row_list)
    
    in_f="supplier_data.csv"
    out_f="s_csv_data.csv"
    csvLibRWdata(in_f,out_f)
    

    out:

    ['Supplier Name', 'Invoice Number', 'Part Number', 'Cost', 'Purchase Date']
    ['Supplier X', '001-1001', '2341', '$500.00', '1/20/14']
    ['Supplier X', '001-1001', '2341', '$500.00', '1/20/14']
    ['Supplier X', '001-1001', '5467', '$750.00', '1/20/14']
    ['Supplier X', '001-1001', '5467', '$750.00', '1/20/14']
    ['Supplier Y', '50-9501', '7009', '$250.00', '1/30/14']
    ['Supplier Y', '50-9501', '7009', '$250.00', '1/30/14']
    ['Supplier Y', '50-9505', '6650', '$125.00', '2/3/14']
    ['Supplier Y', '50-9505', '6650', '$125.00', '2/3/14']
    ['Supplier Z', '920-4803', '3321', '$615.00', '2/3/14']
    ['Supplier Z', '920-4804', '3321', '$615.00', '2/10/14']
    ['Supplier Z', '920-4805', '3321', '$615.00', '2/17/14']
    ['Supplier Z', '920-4806', '3321', '$615.00', '2/24/14']
    

    从以上代码可以看见,csv库能够简化相当多言辞,简化全体代码,通过csv.reader进行读取,并且能够内定分隔符的体裁,就终于用空格隔离的文本文件(有个别csv或txt文件用这种方法保留数据)能够由此转移csv.reader的参数来读文件,方便了成都百货上千。

    pandas库读写

    pandas是数码分析平常接触到的库,pandas和numpy、matplotlib是Python数据分析工具的三驾马车。作用很强劲,Anaconda集成蒙受是包蕴了那多个库的,要是急需协和设置能够参见安装并运用python pandas 百度经验 等学科。Python3条件下有pip可以一条命令行安装必要的第三方库的,本处不开展。

    import pandas as pd
    def pandasLibRWdata(in_fname,out_fname):
        data=pd.read_csv(in_fname)
        data_column_by_name = data.loc[:, ['Invoice Number', 'Purchase Date']] 
        print(data)
        data_column_by_name.to_csv(out_fname, index=False)
    
    in_f="supplier_data.csv"
    out_f="s_csv_data.csv"
    pandasLibRWdata(in_f,out_f)
    

    out

       Supplier Name Invoice Number  Part Number     Cost Purchase Date
    0     Supplier X       001-1001         2341  $500.00       1/20/14
    1     Supplier X       001-1001         2341  $500.00       1/20/14
    2     Supplier X       001-1001         5467  $750.00       1/20/14
    3     Supplier X       001-1001         5467  $750.00       1/20/14
    4     Supplier Y        50-9501         7009  $250.00       1/30/14
    5     Supplier Y        50-9501         7009  $250.00       1/30/14
    6     Supplier Y        50-9505         6650  $125.00        2/3/14
    7     Supplier Y        50-9505         6650  $125.00        2/3/14
    8     Supplier Z       920-4803         3321  $615.00        2/3/14
    9     Supplier Z       920-4804         3321  $615.00       2/10/14
    10    Supplier Z       920-4805         3321  $615.00       2/17/14
    11    Supplier Z       920-4806         3321  $615.00       2/24/14
    

    从下面包车型大巴代码来看,pandas作业三个数额解析库,实现csv饿读写也是很简短的,data是三个dataframe(能够翻译作数据框)数据结构。pandas库通过read_csv(in_fname)举行csv文件读取,to_csv()能够将三个dataframe数据写入到csv,很有益于。
    能够看到csv库读抽取来的数码都是字符串格式,而pandas库读出来的数据会自动进行数据类型的判别,那样数字能够直接管理,因而上边读入后的多少管理要么以pandas作为例子,学习数据剖析用好pandas很着重。

    读入后的数量管理

    赢得的数目貌似保存到列表(上一篇笔记有较详细的上书)恐怕dataframe里,就足以用if实行连锁筛选可能进行平平均数量、众数、方差等的图谋了,当然对于文本数据不可能计算那么些,必要依附csv中具体的数据类型编写合适的代码。

    #将上面的代码扩展为读取和处理
    import pandas as pd
    def pandasLibPredata(in_fname):
        data=pd.read_csv(in_fname) #读入数据
        p_sum=sum(data['Part Number'])
        p_mean=data['Part Number'].mean()
        print(p_sum)
        print(p_mean)
    
    in_f="supplier_data.csv"
    pandasLibPredata(in_f)
    
    #输出:
    56218
    4684.833333333333
    

    下一篇笔记会批注Excel文件的读写和读入数据后的处理,如故用到 pandas 库,而且还有大概会用到 xlrd 和 xlwt 多少个库。本笔记的GitHub同步项目在readingForDS。要熟悉文件读写必要多练习,有别的建议接待联系我。

    本文由澳门新葡8455最新网站发布于编程教学,转载请注明出处:Python数据分析基础ReadingDay3_csv读写,read_csv函数参

    关键词:

上一篇:机器学习,数据清洗

下一篇:没有了