資料分析從零開始實戰 | 基礎篇(二)
上節補充
CSV
逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數字和文字)。
TSV
TSV 是Tab-separated values的縮寫,即製表符分隔值。
Python的csv模組準確的講應該叫做dsv模組,因為它實際上是支援正規化的分隔符分隔值檔案(DSV,delimiter-separated values)的。
delimiter引數值預設為半形逗號,即預設將被處理檔案視為CSV。
當delimiter='\t'
時,被處理檔案就是TSV。
零 寫在前面
上一篇文章中帶大家瞭解了資料分析基礎,配置好了資料分析的基本環境,以及利用pandas
模組讀寫csv檔案,在本文開頭,我也補充了csv與tsv的基本介紹與區別,意在更好的讓大家理解相關知識點,本文將帶大家繼續學習檔案讀取。
點選檢視第一篇文章:資料分析從零開始實戰 | 基礎篇(一)
一 基本知識概要
1.利用pandas讀寫tsv檔案
2.利用pandas讀寫json檔案
二 開始動手動腦
1.利用pandas讀寫tsv檔案
在文章開頭我已經說明了csv與tsv的差別,相信部分看過第一篇文章的讀者應該知道怎麼處理tsv檔案了。
csv與tsv只是內容的分隔符不一樣,前者是,
,後者是\t
,python讀取這兩類檔案都使用csv
模組,也可以直接利用pandas
,這裡我們講利用pandas讀取方式,使用的函式read_csv()
與to_csv()
在上一篇 文章中有詳細介紹,這裡我直接上案例程式碼。
(1) 讀取tsv檔案程式碼
import pandas as pd
import os
# 獲取當前檔案父目錄路徑
father_path = os.getcwd()
# 原始資料檔案路徑
rpath_tsv = father_path+r'\data01\city_station.tsv'
# 讀取資料
tsv_read = pd.read_csv(rpath_tsv, sep="\t")
# 顯示資料前10條
print(tsv_read.head(10))
執行結果
站點名 代號
0 北京北 VAP
1 北京東 BOP
2 北京 BJP
3 北京南 VNP
4 北京西 BXP
(2) 寫tsv檔案程式碼
import pandas as pd
import os
# 獲取當前檔案父目錄路徑
father_path = os.getcwd()
# 儲存資料檔案路徑
path_tsv = father_path+r'\data01\temp_city.tsv'
data = {"站點名": ["北京北", "北京東", "北京", "北京南", "北京西"],
"代號": ["VAP", "BOP", "BJP", "VNP", "BXP"]}
df = pd.DataFrame(data)
df.to_csv(path_tsv, sep="\t", index=False)
執行結果
(3)號外加餐
利用csv模組也可以直接讀取csv和tsv檔案
csv.reader(csvfile, dialect='excel', **fmtparams)
csv.writer(csvfile, dialect='excel', **fmtparams)
csvfile,必須是支援迭代(Iterator)的物件,可以是檔案(file)物件或者列表(list)
物件,如果是檔案物件,開啟時需要加"b"標誌引數。
qdialect,編碼風格,預設為excel的風格,也就是用逗號(,)分隔,dialect方式也
支援自定義。
fmtparam,格式化引數,用來覆蓋之前dialect物件指定的編碼風格。
2.利用pandas讀寫json檔案
(1)利用pandas讀取json檔案
import pandas as pd
import os
# 獲取當前檔案父目錄路徑
father_path = os.getcwd()
# 原始資料檔案路徑
rpath_json = father_path+r'\data01\realEstate_trans.json'
json_read = pd.read_json(rpath_json)
# 輸出頭10行記錄
print(json_read.head(10))
執行結果
函式解析
read_json(path_or_buf,orient,encoding,numpy)
常見引數解析:
path_or_buf:字串,表示檔案路徑;
orient:指示預期的JSON字串格式。可以to_json()使用相應的方向值生成相容的JSON字串。一組可能的方向是:
'split' : dict like {index -> [index], columns -> [columns], data -> [values]}
'records' : list like [{column -> value}, ... , {column -> value}]
'index' : dict like {index -> {column -> value}}
'columns' : dict like {column -> {index -> value}}
'values' : just the values array
encoding:字串,預設為'utf-8';
numpy:布林值,預設為False,直接解碼為numpy陣列。僅支援數字資料,但支援非數字列和索引標籤。另請注意,如果numpy = True,則每個術語的JSON順序必須相同。
(2)利用pandas寫入json檔案
import pandas as pd
import os
# 獲取當前檔案父目錄路徑
father_path = os.getcwd()
# 儲存資料檔案路徑
wpath_json = father_path+r'\data01\temp_trans.json'
data = [{"city": "SACRAMENTO", "longitude": -121.434879, "street": "3526 HIGH ST", "sq__ft": 836, "latitude": 38.631913, "sale_date": "Wed May 21 00:00:00 EDT 2008", "zip": 95838, "beds": 2, "type": "Residential", "state": "CA", "baths": 1, "price": 59222}, {"city": "SACRAMENTO", "longitude": -121.431028, "street": "51 OMAHA CT", "sq__ft": 1167, "latitude": 38.478902, "sale_date": "Wed May 21 00:00:00 EDT 2008", "zip": 95823, "beds": 3, "type": "Residential", "state": "CA", "baths": 1, "price": 68212}, {"city": "SACRAMENTO", "longitude": -121.443839, "street": "2796 BRANCH ST", "sq__ft": 796, "latitude": 38.618305, "sale_date": "Wed May 21 00:00:00 EDT 2008", "zip": 95815, "beds": 2, "type": "Residential", "state": "CA", "baths": 1, "price": 68880}]
df = pd.DataFrame(data)
df.to_json(wpath_json)
執行結果
函式解析
to_json(path_or_buf,orient,encoding,index)
前三個引數和read_json()裡的一樣
index:False則選擇不寫入索引,預設為True。
號外加餐
利用json模版的loads()與dumps()方法也可以實現json檔案的讀寫。
之前的一篇文章有詳細介紹,Python與Json之間的資料互動。
送你的話
最近事情特多,公眾號,學習,學校,寒假班,寒假安排。。。一堆事情,所以原創更新的比較慢,後面我想開一些基於Python影片課程,感覺說話比寫文章簡單,寫這麼一篇簡單的文章得花我半天多的時間,而且累,所以希望大家多多支援。
我始終覺得,要想學好一門語言,底層是最重要的,所以不要覺得入門的這些基本東西太簡單,學好基礎,才能成大牛。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556503/viewspace-2637301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料分析從零開始實戰 | 基礎篇(三)
- 資料分析從零開始實戰 | 基礎篇(一)
- 從零開始學AB測試:基礎篇
- Re:從零開始的Linux之路(基礎篇)Linux
- 從零開始資料分析01--什麼是資料分析
- 從零開始搭建 gRPC 服務 - Golang 篇(二)RPCGolang
- 從零開始——GO語言基礎語法Go
- 從零開始-基礎流程圖編輯庫流程圖
- 從零開始學 Python 之基礎語法Python
- 從零開始的Java RASP實現(二)Java
- 資料視覺化Seaborn從零開始學習教程(二) 顏色調控篇視覺化
- 從零開始教你用vuepress搭建自己的部落格(1)—基礎篇Vue
- Java 執行緒基礎,從這篇開始Java執行緒
- Kotlin基礎篇——從型別系統開始Kotlin型別
- 從零開始搭建React應用(一)——基礎搭建React
- 從零開始實現一個RPC框架(二)RPC框架
- 從零開始寫一個微前端框架-資料通訊篇前端框架
- 資料分析 | 零基礎入門資料分析(一):從入門到摔門?
- 從零開始實現multipart/form-data資料提交ORM
- 從零開始學Linux運維難嗎?Linux基礎Linux運維
- javaSE從零開始04_java的基礎語法Java
- 大資料零基礎由入門到實戰大資料
- 從零開始寫一個node爬蟲(上)—— 資料採集篇爬蟲
- 從零開始學Electron筆記(二)筆記
- python基礎篇實戰Python
- 從零開始學黑蘋果-基礎安裝教程(10.11.6)蘋果
- 電商資料分析全攻略:從零開始提升運營效率
- 大資料系列零基礎由入門到實戰大資料
- 從零開始玩轉PerfDogService---------初探篇Gse
- 從零開始玩轉 PerfDogService---------初探篇Gse
- 從零開始玩轉 PerfDogService Demo 解析篇Gse
- 從零開始玩轉 PerfDogService Demo解析篇Gse
- 從零開始
- 從零開始實現資料庫自動化巡檢(一)資料庫
- 【Python零基礎】19天從零開始學Python——第一天Python
- 從零開始React專案架構(二)React架構
- 0基礎應該怎麼學Linux?Linux如何從零開始?Linux
- 從零開始 Mask RCNN 實戰:基於 Win10 的 Mask RCNN 環境搭建CNNWin10