Pandas高階篇七(讀取文件數據)

Pandas中的數據加載、存儲與解析

1.讀取csv文件

導入模塊

from pandas import Series,DataFrame
import pandas as pd
import numpy as np
from numpy import nan as NA
import sys

用read_csv讀取csv文件

pd.read_csv("data/ex1.csv")

打印結果:

用read_table讀取csv文件

pd.read_table("data/ex1.csv")

打印結果:
這裏寫圖片描述

用read_table讀取csv文件,指定分隔符

pd.read_table("data/ex1.csv",sep=",")

打印結果:
這裏寫圖片描述

#讀取的csv文件沒有表頭時,默認會把第一行數據分配爲表頭
pd.read_csv("data/ex2.csv")

打印結果:
這裏寫圖片描述

#讀取的csv文件沒有表頭時,默認會分配表頭索引
pd.read_csv("data/ex2.csv",header=None)

打印結果:
這裏寫圖片描述

#手動指定標題數據
pd.read_csv("data/ex2.csv",names=["a","b","c","d","message"])

打印結果:
這裏寫圖片描述

#爲加載的數據指定行索引,用某一列的數據作爲行索引
pd.read_csv("data/ex2.csv",names=["a","b","c","d","message"],index_col="message")

打印結果:
這裏寫圖片描述

pd.read_csv("data/csv_mindex.csv")

打印結果:
這裏寫圖片描述

#將讀取的數據進行層次化索引
pd.read_csv("data/csv_mindex.csv",index_col=["key1","key2"])

打印結果:
這裏寫圖片描述

#將讀取的數據進行層次化索引
pd.read_csv("data/csv_mindex.csv",index_col=["key2","key1"])

打印結果:
這裏寫圖片描述

2.讀取txt文件

#讀取文本文件
open("data/ex3.txt")
list(open("data/ex3.txt"))
#打印結果:
['            A         B         C\n',
 'aaa -0.264438 -1.026059 -0.619500\n',
 'bbb  0.927272  0.302904 -0.032399\n',
 'ccc -0.264273 -0.386314 -0.217601\n',
 'ddd -0.871858 -0.348382  1.100491\n']

pd.read_table("data/ex3.txt",sep="\s+")  #多個非空字符

打印結果:
這裏寫圖片描述

#通過skiprows參數指定跳過行索引
pd.read_csv("data/ex4.csv",skiprows=[0,2,3])

打印結果:
這裏寫圖片描述

#加載存在NA的數據文件,na_values將空值轉換爲“NUL”。
pd.read_csv("data/ex5.csv",na_values=['NULL'])

打印結果:
這裏寫圖片描述

sentinels = {"message":["foo","NA"],"something":["two"]}
pd.read_csv("data/ex5.csv",na_values=sentinels)  #把sentinels裏指定的值替換爲NaN

打印結果:
這裏寫圖片描述

3.寫入csv文件

#用pandas將數據寫入到csv文件中
df = DataFrame(np.random.randn(4,3),columns=["a","b","c"],index=["one","two","three","four"])
df

打印結果:
這裏寫圖片描述

df.to_csv("data/mydata1.csv")
#將數據直接輸出到控制檯
df.to_csv(sys.stdout,sep="|")
#打印結果:
|a|b|c
one|0.21522295805912317|0.8563225518233668|0.042847270561624705
two|1.1913785656962268|-0.08198281210776473|-0.6992421650032926
three|-0.06422094382860605|-1.0330910597067728|0.7897464201161191
four|-1.38860351562487|-1.1094144133483024|-0.001512810105137558

#將數據寫入到csv文件,指定分隔符
df.to_csv("data/mydata2.csv",sep="|")
data = pd.read_csv("data/ex5.csv")
data

打印結果:
這裏寫圖片描述

#爲數據集中的NaN值做標記
data.to_csv(sys.stdout,na_rep="NULL")
#打印結果:
,something,a,b,c,d,message
0,one,1,2,3.0,4,NULL
1,two,5,6,NULL,8,world
2,three,9,10,11.0,12,foo

#pandas只寫入數據,不寫入行和列的索引
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

#通過columns指定需要寫入到文件中的列
data.to_csv(sys.stdout,index=False,columns=['a','b','c'])
#打印結果:
a,b,c
1,2,3.0
5,6,
9,10,11.0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章