精华内容
下载资源
问答
  • pandas读取文件 starts=time.time() for file in files[:1]: print(file) file_paths = os.path.join(root, file) print(file_paths) list2=[] # with open(file_paths,'r') as f: # for row in f: # list2...

    pandas读取文件

    starts=time.time()
    
    for file in files[:1]:
        print(file)
        file_paths = os.path.join(root, file)
        print(file_paths)
        list2=[]
    
        # with open(file_paths,'r') as f:
        #    for row in f:
        #         list2 = [row.split(',')[line] for row in f]
        #         #list2.append(row.split()[0])
        #         app_data[file]=list2
    
        df_y = pd.read_csv(file_paths, engine='python')[data]
    
    print(app_data)
    end=time.time()
    

    在这里插入图片描述

    python open读取文件

    line=int(data)
    # x文件有很多
    for root, dirs, files in os.walk(train_file_x):
        # 用第一个文件作为例子
        app_data = pd.DataFrame()
    
        starts=time.time()
    
        for file in files[:1]:
            print(file)
            file_paths = os.path.join(root, file)
            print(file_paths)
            list2=[]
    
            with open(file_paths,'r') as f:
               for row in f:
                    list2 = [row.split(',')[line] for row in f]
                    #list2.append(row.split()[0])
                    app_data[file]=list2
    
            #df_y = pd.read_csv(file_paths, engine='python')[data]
    
        print(app_data)
    

    在这里插入图片描述

    对比结果:
    pandas和python:open 读取同样的文件,花费的效率相差 5倍

    所以,提高效率的办法就是用 python:open读取csv文件,然后在转成DataFrame,如果之后需要用DataFrame的话。

    展开全文
  • 本题就是操作 Numpy 与 Pandas 读取文件,并对比速度: 数据集: rating.txt:https://aiyc.lanzous.com/iSU8ufj79af rating.csv:https://aiyc.lanzous.com/iy3upfxymba import numpy as np import pandas as...

    本题就是操作 Numpy 与 Pandas 读取文件,并对比速度:

    数据集:

    import numpy as np
    import pandas as pd
    import time
    
    start_time = time.time()
    data = np.genfromtxt('./rating.txt', delimiter=',')
    end_reading_time = time.time()
    print('Numpy reading time: {}ms'.format(round((end_reading_time - start_time) * 1000, 2)))
    
    start_time = time.time()
    data = pd.read_table('./rating.csv', 
    	names=['user_id', 'book_id', 'rating'],
    	sep=',')
    end_reading_time = time.time()
    print('Pandas reading time: {}ms'.format(round((end_reading_time - start_time) * 1000, 2)))
    
    # 输出
    Numpy reading time: 27029.64ms
    Pandas reading time: 1003.31ms
    
    展开全文
  • DolphinDB一直说自己速度快,前面使用中并没有遇到实际场景,今天需要读取一个800M的csv文件,特地测试一下。 测试方式有三种 pandas的pd.read_csv() DolphinDB的loadText() DolphinDB的ploadText() ...
    • 速度

      DolphinDB一直说自己速度快,前面使用中并没有遇到实际场景,今天需要读取一个800M的csv文件,特地测试一下。

    • 测试方式有三种

      1. pandas的pd.read_csv()
      2. DolphinDB的loadText()
      3. DolphinDB的ploadText()
    • 测试文件

      1990年到2018年的所有A股日K线数据,总共840M。数据格式为[9930906 rows x 13 columns]

      在这里插入图片描述

      在这里插入图片描述

    • pandas.read_csv()

      >> t = datetime.now()
      >> trade = pd.read_csv('D:\DolphinDB\Python\CHstock1990_2018.csv')
      >> print(datetime.now() - t)
      
      次数时间
      125.765263
      221.028936
      320.476992
      421.289992
      520.709985
      621.352990

      去除第一次的异常值,取剩余五次计算平均值:20.971779

    • loadText()

      >> t = datetime.now()
      >> trade = s.loadText('D:/DolphinDB/Python/CHstock1990_2018.csv')
      >> print(datetime.now() - t)
      
      次数时间
      133.008495
      232.152022
      333.735014
      431.155987
      533.996996
      632.901004

      取六次均值:32.824919

    • ploadText()

      >> t = datetime.now()
      >> trade = s.ploadText('D:/DolphinDB/Python/CHstock1990_2018.csv')
      >> print(datetime.now() - t)
      
      次数时间
      118.863003
      219.764002
      318.942235
      419.214004
      519.554998
      619.845996

      取六次均值:19.364106

    • 结果分析

      用电脑在常规工作环境中载入,先载入六次read_csv,再载入六次ploadText,再载入六次loadText,得到上述结果。

      我不是专业测试,不清楚业内正经测试应该是怎么个流程与环境,然,这就是我正常使用时候得到的结果。

      ploadText() > pd.read_csv() > loadText()

      但是有几个要点:

      1. 首次使用read_csv,经常是比较慢的;
      2. 对于他们各自的底层逻辑并不清楚,所以这个测试可能缺乏理论依据,等后续懂的更多之后再来修补
    展开全文
  • python--pandas读取excel

    千次阅读 2021-04-06 18:02:17
    本文介绍使用pandas读取excel以及读取过程中一些常见的问题。 环境 Excel文件的格式为xls和xlsx,pandas读取excel文件需要安装依赖库xlrd和openpyxl。 !注意:当xlrd>=2.0时,只支持xls格式,不再支持xlsx。 ...

    对excel文件的读取是数据分析中常见的,在python中,pandas库的read_excel方法能够读取excel文件,包括xls和xlsx格式。
    本文介绍使用pandas读取excel以及读取过程中一些常见的问题。

    环境

    Excel文件的格式为xlsxlsx,pandas读取excel文件需要安装依赖库xlrdopenpyxl

    !注意:当xlrd>=2.0时,只支持xls格式,不再支持xlsx。

    • python3.9
    • win10 64bit
    • pandas==1.2.1
    • xlrd==2.0.1
    • openpyxl==3.0.7

    读取xls

    read_excel方法读取xls格式文件,自动使用xlrd引擎。指定io参数为文件路径,文件路径可以是绝对路径或者相对路径。

    import pandas as pd
    pd.set_option('display.notebook_repr_html',False)
    # 读取xls(绝对路径)
    pd.read_excel(io=r'E:\blog\Python\pandas\excel\data.xls')
    
           date  name  count  socre    sum
    0  2017_1_1   mpg     15  1.506  1.330
    1  2017_1_2   asd     18  1.533  1.359
    2  2017_1_3  puck     20  1.537  1.365
    3  2017_1_4    #N     24  1.507  1.334
    4  2017_1_5   NaN     27  1.498  1.325
    5  2017_1_6  some     30  1.506  1.329
    

    文件路径字符串前面加r是为了防止字符串中的\转义

    # 读取xls(相对路径)
    pd.read_excel(io='./data.xls')
    
           date  name  count  socre    sum
    0  2017_1_1   mpg     15  1.506  1.330
    1  2017_1_2   asd     18  1.533  1.359
    2  2017_1_3  puck     20  1.537  1.365
    3  2017_1_4    #N     24  1.507  1.334
    4  2017_1_5   NaN     27  1.498  1.325
    5  2017_1_6  some     30  1.506  1.329
    

    读取xlsx

    read_excel方法读取xlsx格式文件,自动使用openpyxl引擎。同样,可以使用绝对或相对路径读取。

    # 读取xlsx
    pd.read_excel(io='./data.xlsx')
    
           date  name  count  socre    sum
    0  2017_1_1   mpg     15  1.506  1.330
    1  2017_1_2   asd     18  1.533  1.359
    2  2017_1_3  puck     20  1.537  1.365
    3  2017_1_4    #N     24  1.507  1.334
    4  2017_1_5   NaN     27  1.498  1.325
    5  2017_1_6  some     30  1.506  1.329
    

    设置sheet

    设置sheet_name参数,可以指定读取excel的sheet。可以根据sheet的名字或者位置设置参数。

    sheet_name默认值是0,表示读取第一个sheet。

    # 读取xlsx(第二个sheet)(设置sheet位置)
    pd.read_excel(io='./data.xlsx',sheet_name=1)
    
           date    kind  sum   coef  value
    0  2019_1_1  pandas  100  2.506  1.530
    1  2019_1_2     cat  200  2.533  1.359
    2  2019_1_3     dog  300  2.560  1.188
    3  2019_1_4    fish  400  2.587  1.017
    4  2019_1_5     sky  500  2.614  0.846
    5  2019_1_6     git  600  2.641  0.675
    
    # 读取xlsx(第二个sheet)(设置sheet名字)
    pd.read_excel(io='./data.xlsx',sheet_name='demo2')
    
           date    kind  sum   coef  value
    0  2019_1_1  pandas  100  2.506  1.530
    1  2019_1_2     cat  200  2.533  1.359
    2  2019_1_3     dog  300  2.560  1.188
    3  2019_1_4    fish  400  2.587  1.017
    4  2019_1_5     sky  500  2.614  0.846
    5  2019_1_6     git  600  2.641  0.675
    

    设置sheet_name=None,可以读取全部的sheet,返回字典,key为sheet名字,value为sheet表内容。

    # 读取xlsx(全部sheet)
    pd.read_excel(io='./data.xlsx',sheet_name=None)
    
    {'demo':        date  name  count  socre    sum
     0  2017_1_1   mpg     15  1.506  1.330
     1  2017_1_2   asd     18  1.533  1.359
     2  2017_1_3  puck     20  1.537  1.365
     3  2017_1_4    #N     24  1.507  1.334
     4  2017_1_5   NaN     27  1.498  1.325
     5  2017_1_6  some     30  1.506  1.329,
     'demo2':        date    kind  sum   coef  value
     0  2019_1_1  pandas  100  2.506  1.530
     1  2019_1_2     cat  200  2.533  1.359
     2  2019_1_3     dog  300  2.560  1.188
     3  2019_1_4    fish  400  2.587  1.017
     4  2019_1_5     sky  500  2.614  0.846
     5  2019_1_6     git  600  2.641  0.675}
    

    设置列标签

    设置header参数,可以指定目标行的数据为列标签。

    header默认值是0,表示第0行为列标签。
    设置header为i(整数),表示设置i行为列标签,i行之前的数据会被舍弃。

    在这里插入图片描述

    可以看出表格有标题,有列名,如果不设置header,读出来的表格为

    # 读取xlsx
    pd.read_excel(io='./title.xlsx')
    
                     title Unnamed: 1 Unnamed: 2
    0                   id     value1     value2
    1  1900-01-01 00:00:00         23         56
    2  1900-01-02 00:00:00         33         45
    3  1900-01-03 00:00:00         43         34
    4  1900-01-04 00:00:00         53         23
    

    如果要舍弃第一行标题,设置header=1即可。

    # 读取xlsx(指定第二行为列标签)
    pd.read_excel(io='./title.xlsx',header=1)
    
              id  value1  value2
    0 1900-01-01      23      56
    1 1900-01-02      33      45
    2 1900-01-03      43      34
    3 1900-01-04      53      23
    

    时间列解析

    在读取excel时,对于数据中有时间列的,一般操作是要把时间列解析成时间格式。

    # 读取
    df=pd.read_excel(io='./data.xlsx')
    # 查看每列数据类型
    df.dtypes
    
    date      object
    name      object
    count      int64
    socre    float64
    sum      float64
    dtype: object
    

    dtypes属性查看每列的数据类型,发现date列类型为object,并未解析成时间格式,其时间格式为%Y_%m_%d,pandas无法自动识别。

    两步完成时间列解析:

    1. 设置parse_dates参数,指定需要解析的列;
    2. 设置date_parser参数,指定解析器。
    # 解析时间列
    df=pd.read_excel(io='./data.xls',
                     parse_dates=[0],
                     date_parser=lambda x:pd.to_datetime(x,format='%Y_%m_%d'))
    df
    
            date  name  count  socre    sum
    0 2017-01-01   mpg     15  1.506  1.330
    1 2017-01-02   asd     18  1.533  1.359
    2 2017-01-03  puck     20  1.537  1.365
    3 2017-01-04    #N     24  1.507  1.334
    4 2017-01-05   NaN     27  1.498  1.325
    5 2017-01-06  some     30  1.506  1.329
    
    # 查看每列数据类型
    df.dtypes
    
    date     datetime64[ns]
    name             object
    count             int64
    socre           float64
    sum             float64
    dtype: object
    

    如果需要把解析的时间列设置为索引,需要设置index_col参数,表示索引列。

    # 解析时间列,并设置为索引
    df=pd.read_excel(io='./data.xls',
                     index_col=[0],
                     parse_dates=[0],
                     date_parser=lambda x:pd.to_datetime(x,format='%Y_%m_%d'))
    df
    
                name  count  socre    sum
    date                                 
    2017-01-01   mpg     15  1.506  1.330
    2017-01-02   asd     18  1.533  1.359
    2017-01-03  puck     20  1.537  1.365
    2017-01-04    #N     24  1.507  1.334
    2017-01-05   NaN     27  1.498  1.325
    2017-01-06  some     30  1.506  1.329
    

    读取部分列

    设置usecols参数,选择部分列进行读取,可以加快读取速度。可以根据需求灵活设置usecols参数,来选择多列。

    usecols默认None,表示全部读取全部列

    • 字符串"A,C:D":表示选择excel字母列的A列,和C到D列;
    # 选择部分列读取(字符串形式)
    pd.read_excel(io='./data.xlsx',usecols="A,C:D")
    
           date  count  socre
    0  2017_1_1     15  1.506
    1  2017_1_2     18  1.533
    2  2017_1_3     20  1.537
    3  2017_1_4     24  1.507
    4  2017_1_5     27  1.498
    5  2017_1_6     30  1.506
    
    • 字符列表["date","name"]:表示选择数据的date列和name列;
    # 选择部分列读取(字符列表形式)
    pd.read_excel(io='./data.xlsx',usecols=['date','name'])
    
           date  name
    0  2017_1_1   mpg
    1  2017_1_2   asd
    2  2017_1_3  puck
    3  2017_1_4    #N
    4  2017_1_5   NaN
    5  2017_1_6  some
    
    • 整数列表[0,2]:表示选择数据的0列和2列;
    # 选择部分列读取(整数列表形式)
    pd.read_excel(io='./data.xlsx',usecols=[0,2])
    
           date  count
    0  2017_1_1     15
    1  2017_1_2     18
    2  2017_1_3     20
    3  2017_1_4     24
    4  2017_1_5     27
    5  2017_1_6     30
    
    • 函数lambda x:x.endswith("e"):表示选择以字母e结尾的所有列
    # 选择部分列读取(函数形式)
    pd.read_excel(io='./data.xlsx',usecols=lambda x:x.endswith("e"))
    
           date  name  socre
    0  2017_1_1   mpg  1.506
    1  2017_1_2   asd  1.533
    2  2017_1_3  puck  1.537
    3  2017_1_4    #N  1.507
    4  2017_1_5   NaN  1.498
    5  2017_1_6  some  1.506
    

    读取部分行

    设置参数nrows=n,可以读取数据的前n行。

    nrows默认None,表示全部读取全部行

    # 选择前3行读取
    pd.read_excel(io='./data.xlsx',nrows=4)
    
           date  name  count  socre    sum
    0  2017_1_1   mpg     15  1.506  1.330
    1  2017_1_2   asd     18  1.533  1.359
    2  2017_1_3  puck     20  1.537  1.365
    3  2017_1_4    #N     24  1.507  1.334
    

    设置skiprows参数,可以跳过部分行不读取。

    skiprows默认None,表示不跳过行

    # 跳过1,3行不读取
    pd.read_excel(io='./data.xlsx',skiprows=[1,3])
    
           date  name  count  socre    sum
    0  2017_1_2   asd     18  1.533  1.359
    1  2017_1_4    #N     24  1.507  1.334
    2  2017_1_5   NaN     27  1.498  1.325
    3  2017_1_6  some     30  1.506  1.329
    

    可以设置skiprows参数为匿名函数,更加灵活的跳过部分行不读取。

    # 跳过部分行不读取(行索引包含[4,5])
    pd.read_excel(io='./data.xlsx',skiprows=lambda x:x in [4,5])
    
           date  name  count  socre    sum
    0  2017_1_1   mpg     15  1.506  1.330
    1  2017_1_2   asd     18  1.533  1.359
    2  2017_1_3  puck     20  1.537  1.365
    3  2017_1_6  some     30  1.506  1.329
    

    缺失值处理

    read_excel会自动把缺失值标记为NaN,但实际的情况千变万化,例如实际中缺失值可能用#N,##等各种异常符号表示,
    这时候设置na_values参数,可以填充这些异常符号为缺失值。

    # 填充缺失值
    pd.read_excel(io='./data.xlsx',na_values='#N')
    
           date  name  count  socre    sum
    0  2017_1_1   mpg     15  1.506  1.330
    1  2017_1_2   asd     18  1.533  1.359
    2  2017_1_3  puck     20  1.537  1.365
    3  2017_1_4   NaN     24  1.507  1.334
    4  2017_1_5   NaN     27  1.498  1.325
    5  2017_1_6  some     30  1.506  1.329
    

    更多使用细节参考:read_excel

    展开全文
  • pandas读取csv

    2019-08-07 14:15:00
    读取CSV(逗号分割)文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见:http://pandas.pydata.org/pandas-docs/stable/io.html 参数: filepath_or_buffer : str,pathlib。str, pathlib.Path, py._...
  • pandas读取hive配置教程

    2021-08-02 23:25:04
    之所以要使用pandas读取hive的数据,是在于pandas的数据处理能力很强,当然也可以使用sparksql处理,但如果要使用结果图表展示的话,建议还是使用pandas,当然如果上到集群的层面,sparksql是比较好的选择 ...
  • 在处理数据的时候,往往会遇到数据量比较大的情况,而使用pandas读取数据通常会占用内存过大,导致数据无法正常读取或者在进行特征工程时速度很慢,本文从两个角度简单介绍下应对大数据的处理方法。 1. 分块读取数据...
  • pandas读取csv文件

    2020-02-27 11:07:15
    先引入pandas import pandas as pd 1、简单读取文件 data=pd.read_csv('demo.csv') 2、读取限定行 有的时候csv文件太大,想快速查看一下数据内容,就先读取一部分 data=pd.read_csv('demo.csv',nrows=1000) 3、...
  • pandas读取csv文件数据

    千次阅读 2019-07-24 12:01:09
    pandas读取csv文件时,使用的read_csv函数的参数。 1,skiprows参数,可以用于指定跳过csv文件的头部的前几行。 CSV_FILE_PATH = './test.csv' df = pd.read_csv(CSV_FILE_PATH, skiprows=1) print(df.head(5)) -...
  • pandas丨数据读取与保存 读取excel文件: pandas.read_excel() 保存excel文件: pandas.to_excel() pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, ...
  • 可以发现文件是以空格为分隔符,则读取文件时令delimiter=' '(若为tab,则令delimiter=' \t'),读取文件并打印前10行, import pandas as pd import numpy as np train = pd.read_csv(r'C:/Users/company_...
  • 在工作中经常用到mongodb 作为数据的存取,但是有时候进行数据的处理,一条条的读取,感觉挺慢,用pandas 进行读取速度杠杠的,那么问题来了怎么读取 mongodb中的数据呢? # 导入用到的包 Python # ...
  • pandas读取excle和csv文件常见用法 https://blog.csdn.net/geekleee/article/details/52903082
  • 这时候不能利用pandas直接读取,否则会给电脑内存造成太大的压力。因此就需要进行分块处理以及一边处理一边吧处理的结果写入文件的方式。二、Pandas读写txt以及csv文件的实用操作2.1 读取csv文件的参数详解(部分...
  • 深入理解pandas读取excel,txt,csv文件等命令 pandas读取文件官方提供的文档 在使用pandas读取文件之前,必备的内容,必然属于官方文档,官方文档查阅地址 ... 文档操作属于pandas里面的Inpu...
  • 高效的利用pandas读取多个sheet的excel文件

    万次阅读 多人点赞 2019-08-22 14:42:41
    如何更快更高效的利用pandas读取多个sheet的excel文件? 我们知道pandas的读取excel文件的常规方式是pd.read_excel(file, sheetname),我想很多人都是用这种常规的方式进行读取。 其实,sheetname是可以是数字的,...
  • 读取纯文本文件2. 读取Excel文件3. 读取MySQL数据库4. 数据库魔法命令 1. 读取纯文本文件 pd.read_csv() 用于读取csv、tsv、txt等纯文本文件,csv以逗号分隔,tsv以制表符分隔,txt的分隔符任意。 pd.read_csv( ...
  • Pandas读取与导出Excel、CSV文件 在使用Pandas处理数据时,常见的读取数据的方式时从Excel或CSV文件中获取,另外有时也会需要将处理完的数据输出为Excel或CSV文件。今天就一起来学习下Pandas常见的文件读取与导出的...
  • Python_pandas读取数据踩坑记录

    千次阅读 2019-06-22 15:03:15
    以下是我在清洗数据时,在读取数据这一最初步骤上踩到的坑。 1.CSV文件编码报错 import pandas as pd RawData = pd.read_csv('C:/Users/me/Desktop/test.csv') 报错内容如:UnicodeDecodeError: ‘gbk’ codec...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,480
精华内容 2,992
关键字:

pandas读取速度