十分鐘入門pandas(下)【解讀pandas官方文檔】

前言

前文傳送門:

十分鐘入門pandas(上)【解讀pandas官方文檔】

十分鐘入門pandas(中)【解讀pandas官方文檔】

import pandas as pdnimport numpy as npnimport matplotlib.pyplot as pltn

數據透視表

查看更多內容:pandas.pydata.org/panda

import datetimen

註:導入時間模塊

df = pd.DataFrame({A: [one, one, two, three] * 6,n B: [A, B, C] * 8,n C: [foo, foo, foo, bar, bar, bar] * 4,n D: np.random.randn(24),n E: np.random.randn(24),n F: [datetime.datetime(2013, i, 1) for i in range(1, 13)] +n [datetime.datetime(2013, i, 15) for i in range(1, 13)]})ndfn

註:創建了一個dataframe

我們可以很容易地從這些數據生成數據透視表:

pd.pivot_table(df, values=D, index=[A, B], columns=[C])n

註:數據透視表玩法很多,大家通過幫助文檔好好研究下

時間序列

pandas具有簡單,強大和高效的功能,用於在頻率轉換期間執行重採樣操作(例如,將數據轉換為5分鐘數據)。 這在金融應用中非常常見,但不限於此。 請參閱時間序列部分:pandas.pydata.org/panda

rng = pd.date_range(1/1/2012, periods=100, freq=S)nrngn

。。。。。。

首先創建了一個100秒時間戳的系列,s為second的意思。

頻率:字元串或pandas偏移對象,可選 一個pandas日期偏移字元串或相應的對象

ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)ntsn

將剛產生的時間序列rng作為索引index,隨機產生0-500之間的整數作為值。

。。。。。。

將該系列縮小為5分鐘,就是五分鐘採樣一次,並對其值進行求和:

ts.resample(5Min).sum()n

時區表示

rng = pd.date_range(3/6/2012 00:00, periods=5, freq=D)nrngn

註:產生5個數的時間序列,偏移量為D:Day,日期

ts = pd.Series(np.random.randn(len(rng)), rng)ntsn

註:將產生的日期作為索引,產生日起數量(5個)的標準正態分布的數值

本地化時區表示:

ts_utc = ts.tz_localize(UTC)nts_utc n

轉換成其他時區:

ts_utc.tz_convert(US/Eastern)n

在時間跨度表示之間轉換:

rng = pd.date_range(1/1/2012, periods=5, freq=M)nts = pd.Series(np.random.randn(len(rng)), index=rng)ntsn

ps = ts.to_period()npsn

註:將時間日期索引轉化為時間階段索引(這裡是用月份表示)

ps.to_timestamp()n

註:用月份的初始日期表示

分類

自版本0.15以來,pandas可以在DataFrame中包含分類數據。 有關完整文檔,請參閱分類介紹:pandas.pydata.org/panda

和API文檔:pandas.pydata.org/panda

df = pd.DataFrame({"id":[1,2,3,4,5,6], "raw_grade":[a, b, b, a, a, e]})ndfn

將原始成績轉換為分類數據類型:

df["grade"] = df["raw_grade"].astype("category")ndf["grade"]n

註:顯示成績可以分為三類

將類別重命名為更有意義的名稱

df["grade"].cat.categories = ["very good", "good", "very bad"]ndf["grade"]n

註:顯示的就是分類信息了

df["grade"] = df["grade"].cat.set_categories(["very bad", "bad", "medium", "good", "very good"])ndf["grade"]n

註:顯示的就是分類信息了

排序是按類別中的順序排列的,而不是詞法順序

df.sort_values(by="grade")n

註:根據成績排序

按分類列分組還顯示空類:

df.groupby("grade").size()n

註:統計分類後每類元素個數

繪圖

繪圖更多用法:pandas.pydata.org/panda

import matplotlib.pyplot as pltn

註:導入繪圖模塊

ts = pd.Series(np.random.randn(1000), index=pd.date_range(1/1/2000, periods=1000))nts = ts.cumsum()ntts.cumsum()s.plot()nplt.show()n

註:繪製時間序列圖形,ts.cumsum()為累積值,繪圖必須使用show()方法才能展現出來圖。

在DataFrame中,plot()可以方便地繪製帶有標籤的所有列:

df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index,n columns=[A, B, C, D])ndf = df.cumsum()nplt.figure()ndf.plot()nplt.legend(loc=best)nplt.show()n

獲取數據輸入/輸出

CSV

寫入csv文件:pandas.pydata.org/panda

df.to_csv(foo.csv)n

讀取csv文件:pandas.pydata.org/panda

pd.read_csv(foo.csv)n

。。。。。。

Excel

讀取和寫入Excel文件:pandas.pydata.org/panda

寫入Excel:

df.to_excel(foo.xlsx, sheet_name=Sheet1)n

讀取Excel:

pd.read_excel(foo.xlsx, Sheet1, index_col=None, na_values=[NA])n

。。。。。。

易錯點

如果你操作時遇到類似這種問題:

你可以看看這裡的解釋尋求幫助:pandas.pydata.org/panda

也可以參考這裡:pandas.pydata.org/panda

花了一天半時間把10分鐘入門pandas官方文檔解讀了一下,大家有興趣可以深入了解官方文檔的內容,或者用到某部分再去查文檔也是很ok的,哈哈。

感謝你的閱讀~

作者:王大偉 Python愛好者社區唯一小編,請勿轉載,謝謝。

出處:十分鐘入門pandas(下)【解讀pandas官方文檔】

配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享

公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。

推薦閱讀:

TAG:Python | Python库 | Python入门 |