pandas之讀取文件


當使用 Pandas 做數據分析的時,需要讀取事先准備好的數據集,這是做數據分析的第一步。Panda 提供了多種讀取數據的方法:

  • read_csv() 用於讀取文本文件
  • read_json() 用於讀取 json 文件
  • read_sql_query() 讀取 sql 語句的,


本節將對上述方法做詳細介紹。

CSV文件讀取

CSV 又稱逗號分隔值文件,是一種簡單的文件格式,以特定的結構來排列表格數據。 CSV 文件能夠以純文本形式存儲表格數據,比如電子表格、數據庫文件,並具有數據交換的通用格式。CSV 文件會在 Excel 文件中被打開,其行和列都定義了標准的數據格式。

將 CSV 中的數據轉換為 DataFrame 對象是非常便捷的。和一般文件讀寫不一樣,它不需要你做打開文件、讀取文件、關閉文件等操作。相反,您只需要一行代碼就可以完成上述所有步驟,並將數據存儲在 DataFrame 中。

下面進行實例演示,首先您需要創建一組數據,並將其保存為 CSV 格式,數據如下:

Name,Hire Date,Salary,Leaves Remaining 
John Idle,08/15/14,50000.00,10 
Smith Gilliam,04/07/15,65000.00,6 
Parker Chapman,02/21/14,45000.00,7 
Jones Palin,10/14/13,70000.00,3 
Terry Gilliam,07/22/14,48000.00,9 
Michael Palin,06/28/13,66000.00,8  

注意:將上述數據保存到.txt的文本文件中,然后將文件的擴展名后綴修改為 csv,即可完成 csv 文件的創建。

接下來,我們使用下列代碼讀寫數據:

  1. import pandas
  2. #僅僅一行代碼就完成了數據讀取,但是注意文件路徑不要寫錯
  3. df = pandas.read_csv('C:/Users/Administrator/Desktop/hrd.csv')
  4. print(df)

輸出結果:

             Name Hire Date   Salary  Leaves Remaining 
0       John Idle  08/15/14  50000.0                  10
1   Smith Gilliam  04/07/15  65000.0                   6
2  Parker Chapman  02/21/14  45000.0                   7
3     Jones Palin  10/14/13  70000.0                   3
4   Terry Gilliam  07/22/14  48000.0                   9
5   Michael Palin  06/28/13  66000.0                   8

在下一節會對 read_csv() 函數做詳細講解。

json讀取文件

您可以通過下列方法來讀取一個 json 文件,如下所示:

  1. import pandas as pd
  2. data = pd.read_json('C:/Users/Administrator/Desktop/hrd.json')
  3. print(data)

輸出結果:

             Name Hire Date   Salary  Leaves Remaining 
0       John Idle  08/15/14  50000.0                  10
1   Smith Gilliam  04/07/15  65000.0                   6
2  Parker Chapman  02/21/14  45000.0                   7
3     Jones Palin  10/14/13  70000.0                   3
4   Terry Gilliam  07/22/14  48000.0                   9
5   Michael Palin  06/28/13  66000.0                   8

SQL數據庫讀取

如果想要從 SQL 數據庫讀取數據,首先您應該使用 Python 和數據庫建立連接,然后將查詢語句傳遞給 read_sql_query() 方法,下面做簡單地演示:

1) 安裝pysqlite3模塊

pip install pysqlite3

2) 建立數據連接

import sqlite3 
con = sqlite3.connect("database.db")  

3) 數據庫讀取數據

在 SQLite 數據庫中創建一張信息表,您可以隨意添加一些信息,最后使用下列方法讀取數據即可:

#con參數指定操作數據庫的引擎,可以指定,也可默認
df = pd.read_sql_query("SELECT * FROM information",con)  
---------------------------------------------------------------
在《Python Pandas讀取文件》中,我們講解了多種用 Pandas 讀寫文件的方法。本節我們講解如何應用這些方法 。

我們知道,文件的讀寫操作屬於計算機的 IO 操作,Pandas IO 操作提供了一些讀取器函數,比如 pd.read_csv()、pd.read_json 等,它們都返回一個 Pandas 對象。

在 Pandas 中用於讀取文本的函數有兩個,分別是: read_csv() 和 read_table() ,它們能夠自動地將表格數據轉換為 DataFrame 對象。其中 read_csv 的語法格式,如下:
pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',names=None, index_col=None, usecols=None)
下面,新建一個 txt 文件,並添加以下數據:
ID,Name,Age,City,Salary
1,Jack,28,Beijing,22000
2,Lida,32,Shanghai,19000
3,John,43,Shenzhen,12000
4,Helen,38,Hengshui,3500
將 txt 文件另存為 person.csv 文件格式,直接修改文件擴展名即可。接下來,對此文件進行操作。

read_csv()

read_csv() 表示從 CSV 文件中讀取數據,並創建 DataFrame 對象。
  1. import pandas as pd
  2. #需要注意文件的路徑
  3. df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv")
  4. print (df)
輸出結果:
   ID   Name  Age      City  Salary
0   1   Jack   28   Beijing   22000
1   2   Lida   32  Shanghai   19000
2   3   John   43  Shenzhen   12000
3   4  Helen   38  Hengshui    3500

1) 自定義索引

在 CSV 文件中指定了一個列,然后使用index_col可以實現自定義索引。
  1. import pandas as pd
  2. df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",index_col=['ID'])
  3. print(df)
輸出結果:
     Name  Age      City  Salary
ID                             
1    Jack   28   Beijing   22000
2    Lida   32  Shanghai   19000
3    John   43  Shenzhen   12000
4   Helen   38  Hengshui    3500

2) 查看每一列的dtype

  1. import pandas as pd
  2. #轉換salary為float類型
  3. df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",dtype={'Salary':np.float64})
  4. print(df.dtypes)
輸出結果:
ID          int64
Name       object
Age         int64
City       object
Salary    float64
dtype: object
注意:默認情況下,Salary 列的 dtype 是 int 類型,但結果顯示其為 float 類型,因為我們已經在上述代碼中做了類型轉換。

3) 更改文件標頭名

使用 names 參數可以指定頭文件的名稱。
  1. import pandas as pd
  2. df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",names=['a','b','c','d','e'])
  3. print(df)
輸出結果:
    a      b    c         d       e
0  ID   Name  Age      City  Salary
1   1   Jack   28   Beijing   22000
2   2   Lida   32  Shanghai   19000
3   3   John   43  Shenzhen   12000
4   4  Helen   38  Hengshui    3500
注意:文件標頭名是附加的自定義名稱,但是您會發現,原來的標頭名(列標簽名)並沒有被刪除,此時您可以使用header參數來刪除它。

通過傳遞標頭所在行號實現刪除,如下所示:
  1. import pandas as pd
  2. df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",names=['a','b','c','d','e'],header=0)
  3. print(df)
輸出結果:
   a      b   c         d      e
0  1   Jack  28   Beijing  22000
1  2   Lida  32  Shanghai  19000
2  3   John  43  Shenzhen  12000
3  4  Helen  38  Hengshui   3500
假如原標頭名並沒有定義在第一行,您也可以傳遞相應的行號來刪除它。

4) 跳過指定的行數

skiprows參數表示跳過指定的行數。
  1. import pandas as pd
  2. df=pd.read_csv("C:/Users/Administrator/Desktop/person.csv",skiprows=2)
  3. print(df)
輸出結果:
   2   Lida  32  Shanghai  19000
0  3   John  43  Shenzhen  12000
1  4  Helen  38  Hengshui   3500
注意:包含標頭所在行。

to_csv()

Pandas 提供的 to_csv() 函數用於將 DataFrame 轉換為 CSV 數據。如果想要把 CSV 數據寫入文件,只需向函數傳遞一個文件對象即可。否則,CSV 數據將以字符串格式返回。

下面看一組簡單的示例:
  1. import pandas as pd
  2. data = {'Name': ['Smith', 'Parker'], 'ID': [101, 102], 'Language': ['Python', 'JavaScript']}
  3. info = pd.DataFrame(data)
  4. print('DataFrame Values:\n', info)
  5. #轉換為csv數據
  6. csv_data = info.to_csv()
  7. print('\nCSV String Values:\n', csv_data)
輸出結果:
DataFrame:
      Name   ID    Language
0   Smith  101      Python
1  Parker  102  JavaScript

csv數據:
,Name,ID,Language
0,Smith,101,Python
1,Parker,102,JavaScript
指定 CSV 文件輸出時的分隔符,並將其保存在 pandas.csv 文件中,代碼如下:
  1. import pandas as pd
  2. #注意:pd.NaT表示null缺失數據
  3. data = {'Name': ['Smith', 'Parker'], 'ID': [101, pd.NaT], 'Language': ['Python', 'JavaScript']}
  4. info = pd.DataFrame(data)
  5. csv_data = info.to_csv("C:/Users/Administrator/Desktop/pandas.csv",sep='|')


免責聲明!

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



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