數據分析從零開始實戰(二)
- 2020 年 1 月 16 日
- 筆記
上節補充
上篇數據分析從零開始實戰(一)
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'data01city_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'data01temp_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'data01realEstate_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'data01temp_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視頻課程,感覺說話比寫文章簡單,寫這麼一篇簡單的文章得花我半天多的時間,而且累,所以希望大家多多支持。
我始終覺得,要想學好一門語言,底層是最重要的,所以不要覺得入門的這些基本東西太簡單,學好基礎,才能成大牛。
【完】