資料分析從零開始實戰 | 基礎篇(二)

極簡XksA發表於2019-03-01

上節補充

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章