CSVファイルを読み込み、Pythonのチュートリアルトピックを作成する(3)

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/xo3ylAF9kGs/article/details/90586392

これは最初のオリジナル276です

640?wx_fmt = PNG

完全なマップ


最初の2つの部分:

CSVファイルを読み込み、Pythonのチュートリアルトピックを作成する(1)

CSVファイルを読み込み、Pythonのチュートリアルトピックを作成する(2)



2.5時間関連

parse_dates

時間特定の種類としてインポートではなく、このパラメータ設定のインポートではなく、導入式後の時間のためであれば、次のように:

In [5]: df = pd.read_csv('test.csv',sep='\s+',header=0,na_values=['#'])         

In [6]: df                                                                      
Out[6]: 
   id  id.1  age label       date
0   1  'gz'   10   YES  1989-12-1
1   2  'lh'   12    NO        NaN

In [7]: df.dtypes                                                               
Out[7]: 
id        int64
id.1     object
age       int64
label    object
date     object
dtype: object

タイプオブジェクトのこの日付コラムで、時間型に方法を見つけます:

In [8]: df = pd.read_csv('test.csv',sep='\s+',header=0,na_values=['#'],parse_dat
   ...: es=['date'])                                                            

In [9]: df                                                                      
Out[9]: 
   id  id.1  age label       date
0   1  'gz'   10   YES 1989-12-01
1   2  'lh'   12    NO        NaT

In [11]: df.dtypes                                                              
Out[11]: 
id                int64
id.1             object
age               int64
label            object
date     datetime64[ns]

このとき、datetime型。

date_parser

使用のタイプをカスタマイズするdate_parser一定時間パラメータは、以下に詳細にまとめられています。当社のデータファイル:

In [82]: cat test.csv                                                           
id  id  age  label  date
1  'gz'  10  YES  26-MAY-2019
2  'lh'  12  NO  30-MAR-2019

次のように時間は、標準形式の日付に変換されている場合:

In [83]: df = pd.read_csv('test.csv',sep='\s+',parse_dates=['date'],date_parser=
    ...: lambda dates: pd.datetime.strptime(dates,'%d-%b-%Y'))                  

In [84]: df                                                                     
Out[84]: 
   id  id.1  age label       date
0   1  'gz'   10   YES 2019-05-26
1   2  'lh'   12    NO 2019-03-30

以下のように、timetupleフォーマットへ:

In [85]: df = pd.read_csv('test.csv',sep='\s+',parse_dates=['date'],date_parser=
    ...: lambda dates: pd.datetime.strptime(dates,'%d-%b-%Y').timetuple())      

In [86]: df                                                                     
Out[86]: 
   id  id.1  age label                                date
0   1  'gz'   10   YES  (20195260006146, -1)
1   2  'lh'   12    NO   (2019330000589, -1)

infer_datetime_format

、論理値FALSEデフォルトにinfer_datetime_formatパラメータのデフォルト
可能変換、変換方法および解像度あれば利用できる真とparse_datesに設定すると、パンダは、date型を変換しようとします。いくつかのケースでは5〜10倍高速化。

ブロック2.6を読みます

高速メモリに読み込むことにより、

イテレータ

バリューブールは、falseデフォルト
ブロックによるファイルブロックへTextFileReaderオブジェクトを返します。

このファイルが大きい場合、メモリは順次処理、バッチで読み、その後、すべてのデータファイルを保持することはできません。次のプレゼンテーションを行うために、我々は、データ・フィールド、2行の合計を提出します。

最初の行を読んで、get_chunkパラメータ1は、リード線を示します

In [105]: chunk = pd.read_csv('test.csv',sep='\s+',iterator=True)               

In [106]: chunk.get_chunk(1)                                                    
Out[106]: 
   id  id.1  age label         date       date1
0   1  'gz'   10   YES  26-MAY-2019  4-OCT-2017

次の行を読んで、

In [107]: chunk.get_chunk(1)                                                    
Out[107]: 
   id  id.1  age label         date       date1
1   2  'lh'   12    NO  30-MAR-2019  2-SEP-2018

もう一度読んで、ファイルの末尾にこの時間は、異常なメンバーシップを報告しました

In [108]: chunk.get_chunk(1)  

StopIteration                             Traceback (most recent call last)
<ipython-input-108-f294b07af62c> in <module>
----> 1 chunk.get_chunk(1)

チャンク

チャンクサイズ:int型、デフォルトなし
サイズのファイルブロック

2.7の参照、圧縮、ファイル形式

圧縮

参数取值为 {‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}, default ‘infer’
直接使用磁盘上的压缩文件。如果使用infer参数,则使用 gzip, bz2, zip或者解压文件名中以‘.gz’, ‘.bz2’, ‘.zip’, or ‘xz’这些为后缀的文件,否则不解压。

如果使用zip,那么ZIP包中国必须只包含一个文件。设置为None则不解压。

In [119]: df = pd.read_csv('test.zip',sep='\s+',compression='zip')              

In [120]: df                                                                    
Out[120]: 
   id  id.1  age label         date       date1
0   1  'gz'   10   YES  26-MAY-2019  4-OCT-2017
1   2  'lh'   12    NO  30-MAR-2019  2-SEP-2018

thousands

thousands : str, default None
千分位分割符,如“,”或者“."

如下,显示数据文件 test.csv

In [122]: cat test.csv                                                          
id  id  age  label  date
1  'gz'  10  YES  1,090,001
2  'lh'  12  NO  20,010

其中date列为带千分位分隔符的整形,如果我们不显示指定thousands参数,则读入后的date列类型为object. 如下:

In [125]: df = pd.read_csv('test.csv',sep='\s+')                                

In [126]: df                                                                    
Out[126]: 
   id  id.1  age label       date
0   1  'gz'   10   YES  1,090,001
1   2  'lh'   12    NO     20,010

In [127]: df.dtypes                                                             
Out[127]: 
id        int64
id.1     object
age       int64
label    object
date     object
dtype: object

如果显示指定thousands为,,则读入后date列显示为正常的整型。

In [128]: df = pd.read_csv('test.csv',sep='\s+',thousands=','

In [132]: df                                                                    
Out[132]: 
   id  id.1  age label     date
0   1  'gz'   10   YES  1090001
1   2  'lh'   12    NO    20010


In [130]: df['date'].dtypes                                                     
Out[130]: dtype('int64')

decimal

decimal : str, default ‘.’
字符中的小数点 (例如:欧洲数据使用’,‘). 类别上面的thousands参数。

float_precision

float_precision : string, default None
指定c引擎的浮点数转化器,默认为普通,参数可能取值还包括:high-precision, round_trip.

lineterminator

lineterminator: str (length 1), default None
行分割符,只在C解析器下使用。

quotechar

quotechar: str (length 1), optional
引号,用作标识开始和解释的字符,引号内的分割符将被忽略。

quoting

quoting : int or csv.QUOTE_* instance, default 0

控制csv中的引号常量。可选 QUOTE_MINIMAL (0), QUOTE_ALL (1), QUOTE_NONNUMERIC (2) or QUOTE_NONE (3)

doublequote : boolean, default True
双引号,当单引号已经被定义,并且quoting 参数不是QUOTE_NONE的时候,使用双引号表示引号内的元素作为一个元素使用。

escapechar

escapechar: str (length 1), default None
当quoting 为QUOTE_NONE时,指定一个字符使的不受分隔符限值。

comment

comment: str, default None
标识着多余的行不被解析。如果该字符出现在行首,这一行将被全部忽略。

这个参数只能是一个字符,空行(就像skip_blank_lines=True),注释行被header和skiprows忽略一样。例如,如果指定comment='#' 解析‘#empty\na,b,c\n1,2,3’ 以header=0 那么返回结果将是以’a,b,c'作为header。

encoding

encoding: str, default None
指定字符集类型,通常指定为'utf-8'. List of Python standard encodings

dialect

dialect: str or csv.Dialect instance, default None
如果没有指定特定的语言,如果sep大于一个字符则忽略。具体查看csv.Dialect 文档

error_bad_lines

error_bad_lines:ブール値、デフォルトはTrue
行があれば包含太多的列、デフォルトのデータフレームを返しませんfalseに設定されている場合、それはなります该行剔除(只能在C解析器下使用)

(私たちのデータファイルのデフォルトの区切り文字は二つの空間であるため、二つのスペースで)私たちは、セル値のtest.CSVファイルを意図的に変更します

In [148]: cat test.csv                                                          
id  id  age  label  date
1  'gz'  10.8  YES  1,090,001
2  'lh'  12.31  NO  O  20,010

この場合、データファイルを読み込み、例外が報告されます。

ParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 6

小さなサンプルサイズを読み込む場合、このエラーはすぐに発見されたが、大きなデータファイルを読み込むときに一時間、このようなエラーの出現の最後の数行を読めば、それは吸うです!だから、安全側は、我々は一般的にerror_bad_linesがTrueに設定セクションの下warn_bad_linesを使用している間、この行を削除する、つまり、Falseに設定され、印刷は、この行を拒否します。

In [150]: df = pd.read_csv('test.csv',sep='\s+',error_bad_lines=False)          
b'Skipping line 3: expected 5 fields, saw 6\n'

In [151]: df                                                                    
Out[151]: 
   id  id.1   age label       date
0   1  'gz'  10.8   YES  1,090,001

3行目をスキップ:出力アラーム情報を見ることができる5つのフィールドを期待し、6を見て

warn_bad_lines

warn_bad_lines:ブール値、デフォルトはTrue
error_bad_lines = Falseを、そしてwarn_bad_lines = Trueの場合、すべての「悪い行が」出力(のみCパーサで利用可能)になります。

パラメータtupleize_cols、お勧めできません。

これらは、すべてのパラメータであり、対応するプレゼンテーションcsvファイルを読み込みます。



以下のための話題Pythonコミュニティとアルゴリズム再現し、生産公共の数は、ソースを明記してください。

640?wx_fmt = JPEG

Pythonとアルゴリズムコミュニティ

おすすめ

転載: blog.csdn.net/xo3ylAF9kGs/article/details/90586392