Pandas 數據加載、存儲與文件格式: read_csv, to_csv


Pandas 數據加載、存儲與文件格式

摘自《利用Python進行數據分析2版》

  • 讀取文本文件和其他更高效的磁盤存儲格式,
  • 加載數據庫中的數據,
  • 利用Web API操作網絡資源。

6.1 讀寫文本格式的數據read_csv

pandas提供了一些用於將表格型數據讀取為DataFrame對象的函數。

面對不同的參數,感到頭痛很正常(read_csv有超過50 個參數)。pandas文檔有這些參數的例子,如果你感到閱讀某個文件很難,可以通 過相似的足夠多的例子找到正確的參數。


 

插入知識:

 %的使用。

  •    %+ unix cell命令,可以在jupyter上運行Unix命令。
  •    %lsmagic 列出常用的所有魔法命令。

 ❗️的使用,和%類似,運行各種命令。


 

通過例子來分析read_*系列的參數的用法

使用Unix cell命令, 運行一個csv文件:

In [8]: !cat examples/ex1.csv
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
df = pd.read_csv('ex1.csv')

#     a    b    c    d    message
#0    1    2    3    4    hello
#1    5    6    7    8    world
#2    9    10    11    12    foo

 

默認第一行為header,參數是header='infer',但如果文件沒有header:

  • 需使用names參數指定。
  • 或者修改header=None, 這會自動增加一行遞增的整數列名。

參數index_col: 把列設置為index。

pd.read_csv('ex1.csv', index_col='message')

 

參數index_col:還可以設置MultiIndex。多重索引, index_col  :  array_like

參數sep:  設置分隔符號,可以使用正則表達式。

  • pandas的re包(正則表達式)\s 代表空格,包括 \t\n\r\f\v。
  • 所以sep="\s+",就代表1個以上的空格作為分隔符號。

參數skiprows : list-like, int, callable

  • 根據行號,忽略掉一些行

參數nrows : int

  • 讀取部分行,一般用於大文件,分塊讀取行。

⚠️參數na_values: scalar, str, list, dict,用於處理缺失值。

  1. 默認:如果發現值是'', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan'等等,則解析為NaN。
  2. 可以指定某些values,轉換為NaN.
#values中的1,2,3被轉換為NaN
pd.read_csv('ex5.csv', na_values=[1,2,3])

 

逐塊讀取文本文件

#設置jupyter中每個cell執行后顯示的行數
pd.options.display.max_rows = 60

使用參數:chunksize : int

  • 會返回一個可迭代的對象。pandas.io.parsers.TextParser 
  • 然后對這個對象進行for循環,處理其中的數據。

 

將數據寫出到文本格式to_csv

1.使用to_csv,默認把數據寫到一個以逗號“,”為seperator分隔符號的文件。

2.可以使用參數sep指定分隔符號。

3.缺失值NaN等的處理,默認會輸出為空字符串""。使用參數na_rep來設置缺失值以什么表示。

4.如果不保存index和column標簽,則使用參數index=False, header=False

5.參數columns=[]可以指定列

例子:

data
#something    a    b    c    d    message
#0    one    1    2    3.0    4    NaN
#1    two    5    6    NaN    8    world
#2    three    9    10    11.0    12    foo

import sys
# 輸出到屏幕
data.to_csv(sys.stdout, sep="|", na_rep="NaN")
#|something|a|b|c|d|message
#0|one|1|2|3.0|4|NaN
#1|two|5|6|NaN|8|world
#2|three|9|10|11.0|12|foo

data.to_csv(sys.stdout, index=False, header=False)
#one,1,2,3.0,4,
#two,5,6,,8,world
#three,9,10,11.0,12,foo

 

 

處理分隔符格式 197頁

本章主要將pandas內置的包csv的用法。

對於那些使用復雜分隔符或多字符分隔符的文件,csv模塊就無能為力 了。

這種情況下,你就只能使用字符串的split方法或正則表達式方法re.split進 行行拆分和其他整理工作了。

 

后面的章節未閱讀。

JSON數據

XML和HTML:Web信息收集

 

6.2 二進制數據格式

實現數據的高效二進制格式存儲最簡單的辦法之一是使用Python內置的pickle序列化。

使用HDF5格式

讀取Microsoft Excel文件

6.3 Web APIs交互

許多網站都有一些通過JSON或其他格式提供數據的公共API。通過Python訪問這些 API的辦法有不少。一個簡單易用的辦法(推薦)是requests包

 

6.4 數據庫交互

案例見之前的博客:https://www.cnblogs.com/chentianwei/p/12103298.html

 

你肯定不想每查一次數據庫就重寫一次。SQLAlchemy 項目是一個流行的Python SQL工具,它抽象出了SQL數據庫中的許多常見差異。

pandas有一個read_sql函數,可以讓你輕松的從SQLAlchemy連接讀取數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM