learning pandas

這個學期起初的時候對一些東西有所了解過,就跳過很多東西吧,把一些自己認為重要的做出筆記,看了昨天的那東西,截圖搞得自己現在都犯糊涂,以后有機會再把主要的原理和知識點搞出來吧,畢竟現在我也不是很懂。 今天弄pandas, 字數不多,但好長。

pd.set_option('display.notebook_repr_html', False)

pd.set_option('display.max_columns', 10)

pd.set_option('display.max_rows', 10)


不弄也沒事,有些數據反而不好顯示,但知道有這么個設置吧

import pandas? as pd

s3 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])

pd.Series(np.arange(0, 9))????? 基本形式就是這樣

pd.Series(np.linspace(0, 9, 10))??? 等步長 以10為底? Series注意大寫,自帶索引

s6 = pd.Series({'a': 1, 'b': 2, 'c': 3, 'd': 4})?? 字典創建

size, shape, uniqueness, and counts of values ? ? 以s.sise方式調用

# count() returns the number of non-Na N values?? s.count()返回非空數組

# all unique values? ? ? ? ? s.unique()? 以及啥s.value_counts()

Peeking at data with heads, tails, and take? ? ? s.head(n = 3)? ? s.tail(n = 3)


其中s.take([0, 3, 9])? take返回特定的行,用行索引值

s5.loc[12]? 按標簽找值? ? s5.loc[[12, 10]]??? 多個標簽找值

s5.iloc[1]? ? 按索引找值? s5.iloc[[0, 2]]
?ix兩個都可以 ???? 如s3.ix[['a', 'c']]? ? s3.ix[[1, 2]]



但兩個pandas相加會以索引相同的相加

nda = np.array([1, 2, 3, 4, np.Na N])? ? nda.mean() ? 會得到空值,pandas會忽略空值計算均值

s.mean(skipna=False)

學表達式? logical Results = s > 5 ? ?? s[logical Results]

或者更短 ? s[s > 5]

s[s > 5 and s < 8]? 是錯誤的語法?

s[(s > 5) & (s < 8)]?? 才是正確的,不用and/or???? 用? &/ |?? 否則會錯? s[s < 2].any()

Reindexing a Series?

s = pd.Series(np.random.randn(5))

s.index = ['a', 'b', 'c', 'd', 'e']

combined = pd.concat([s1, s2])?? 索引類型必須一直,否則出現空值

s2.index = s2.index.values.astype(int)?? 換數據類型

s2.reindex(['a', 'f'], fill_value=0)

s3.reindex(np.arange(0,7), method='ffill')

切片操作:? s[0:6:2]? ?? 意思是 查找位置 索引 0, 2, 4的值

相當于??? s.iloc[[0, 2, 4]]

還有? s[:5:2]? ? s[4::2]? 4開始步長為2? s[::-1]? 反轉。? s[4::-2]? 倒數第四個起

s[-3:]? ? 最后三個? ? s[-4:-1]??? equivalent to s.tail(4).head(3)

以上是Series的,接下來時DataFrame

The pandas Data Frame Object

import numpy as np?

import pandas as pd

pd.DataFrame(np.array([[10, 11], [20, 21]]))??? 自帶索引 列名? 若無指定

"{0}, {1}".format(df.columns[0], df.columns[1])

df.columns = ['c1', 'c2']? 重命名列

create a Data Frame with named columns and rows

df = pd.Data Frame(np.array([[0, 1], [2, 3]]),columns=['c1', 'c2'],index=['r1', 'r2'])

sp500 = pd.read_csv("data/sp500.csv",index_col='Symbol',usecols=[0, 2, 3, 7])指定索引列,并制定只選取哪些列

Selecting columns of a DataFrame?? 選取某些列

?? sp500[[1, 2]].head()?? 1,2列的頭部(前5行)

get price column by name? ? sp500['Price']? sp500[['Price', 'Sector']]
選行:

sp500[:5]? 前5行? ? ? ? sp500['ABT':'ACN']? ? sp500.loc['MMM']? sp500.loc[['MMM', 'MSFT']]

sp500.iloc[[0, 2]]? ? sp500.ix[['MSFT', 'ZTS']]? sp500.ix[[10, 200, 450]]

sp500.at['MMM', 'Price']???? 坐標值

sp500[sp500.Price < 100]

r = sp500[(sp500.Price < 10) &(sp500.Price > 0)] [['Price']]? 條件下只選擇顯示price列

Renaming columns?? 重命名列

df = sp500.rename(columns={'Book Value': 'Book Value'})

sp500.rename(columns={'Book Value': 'Book Value'},inplace=True)? 參數的作用是在原始列中重命名實現

增加插入列

copy['Twice Price'] = sp500.Price * 2?? 新列

copy.insert(1, 'Twice Price', sp500.Price * 2)?? 插入位置,名字,值

rcopy = sp500[0:3][['Price']].copy()

置換列的內容:copy.Price = sp500.Price * 2? 不增加新列

del copy['Book Value']?? 刪某列

popped = copy.pop('Sector')

afterdrop = copy.drop(['Sector'], axis = 1)?? 1指列

apending rows with .append()? 增加行用這個函數

appended = df1.append(df2)

df1.append(df3, ignore_index=True) 參數不加會引起索引的不連續 ,即各自索引拼接而已,

pd.concat([df1, df2])? 也可以這樣

df2_2.insert(3, 'Foo', pd.Series(0, index=df2.index))?? 插入列

r = pd.concat([df1, df2_2], keys=['df1', 'df2'])
效果:

pd.concat([df3, df4], axis=1)?? 按列拼接

df4_2.insert(1, 'Sector', pd.Series(1, index=df4_2.index))

df6 = sp500[2:5][[0,1]]?? 顯示2到5行 1,2列

pd.concat([df5, df6], join='inner', axis=1)? 注意join參數,還有幾個

afterdrop = ss.drop(['ABT', 'ACN'])? 把行里面的選定標簽給去掉了

subset.loc['MMM', 'Price'] = 10

subset.loc['ABBV', 'Price'] = 20? 改變值

subframe = df[1:4][['B', 'C']]

Resetting and reindexing

reset_sp500 = sp500.reset_index()?? 把原本的索引列變為普通列

reset_sp500.set_index('Symbol')???? 將普通列設置為索引列

reindexed = subset.reindex(index=['MMM', 'ABBV', 'FOO'])? 重新設置行索引的位置和內容

subset.reindex(columns=['Price','Book Value','New Col'])? 可以用于列的索引標簽

Hierarchical indexing?? 叫層次化索引吧,英語不好

reindexed = sp500.reset_index()? 先將源索引貶職,

multi_fi = reindexed.set_index(['Sector', 'Symbol'])? 在設置多個索引,按順序的這是

one_mon_hist.mean()?? 默認為列的均值

one_mon_hist.mean(axis=1)??? 計算為行的均值

one_mon_hist[['MSFT', 'AAPL']].min()

pd.Series([1, 2, 3, 4]).cumprod()?? 連乘

pd.Series([1, 2, 3, 4]).cumsum()? 累加

one_mon_hist.describe()

s.unique()

s.value_counts()? ? 每一個唯一值得個數。

pd.read_csv()? function:這個函數用于讀取數據

msft = pd.read_csv("data/msft.csv", index_col=0) 指定索引

msft.dtypes? 查看數據類型之后

msft = pd.read_csv("data/msft.csv",dtype = { 'Volume' : np.float64})? 改變數據類型

df = pd.read_csv("data/msft.csv",header=0,names=['open', 'high', 'low','close', 'volume', 'adjclose']) 修飾列名,header=0 表示跳過首行,必須有,不然以后會出問題 可能

df2 = pd.read_csv("data/msft.csv",usecols=['Date', 'Close'],index_col=['Date'])? 指定列,索引

df2.to_csv("data/msft_modified.csv", index_label='date')? 存儲數據

df = pd.read_table("data/msft.csv", sep=',')?? 分隔符為,的文件

df.to_csv("data/msft_piped.txt", sep='|')

df = pd.read_csv("data/msft2.csv", skiprows=[0, 2, 3])? 跳過那幾行

df = pd.read_csv("data/msft_with_footer.csv",skip_footer=2,engine = 'python') 跳過最后兩行

pd.read_csv("data/msft.csv", nrows=3)? 只讀取前3行

pd.read_csv("data/msft.csv", skiprows=100, nrows=5,header=0,names=['open', 'high', 'low', 'close', 'vol','adjclose'])? 以上的整合,就不寫意思了

df = pd.read_excel("data/stocks.xlsx")

aapl = pd.read_excel("data/stocks.xlsx", sheetname='aapl') 讀取指定表

df.to_excel("data/stocks2.xls")??? 存儲

df.to_excel("data/stocks_msft.xls", sheet_name='MSFT')

from pandas import Excel Writer

with Excel Writer("data/all_stocks.xls") as writer:

aapl.to_excel(writer, sheet_name='AAPL')

df.to_excel(writer, sheet_name='MSFT') ? 多個表的操作

df_from_json = pd.read_json("data/stocks.json")


從web讀取html 數據

url = "http://www.fdic.gov/bank/individual/failed/banklist.html"

banks = pd.read_html(url)

首先import? Html5Lib



df = pd.Data Frame(np.random.randn(8, 3),index=pd.date_range('1/1/2000', periods=8),columns=['A', 'B', 'C'])


這是從web讀取

df = pd.read_csv("http://ichart.yahoo.com/table.csv?s=MSFT&" +"a=5&b=1&c=2014&" +"d=5&e=30&f=2014&" +"g=d&ignore=.csv") ? ? 反正沒弄成,在編譯器上報網址錯誤


但要記住這個方法,,或記住有這個方法

Reading and writing from/to SQL? databases? 這一站等過幾天學習生sql的時候在回過來 看吧


從遠程數據服務器上讀取數據

import pandas.io.data as web?? 改了,,會報錯

start = datetime.datetime(2012, 1, 1)

end = datetime.datetime(2014, 1, 27)

yahoo = web.Data Reader('MSFT', 'yahoo', start, end)

goog = web.Data Reader("MSFT", 'google', start, end)

aapl = pd.io.data.Options('AAPL', 'yahoo')? 函數

data = aapl.get_all_data()??? 不知道能成不

data.loc[(80, slice(None), 'put'), :].iloc[0:5, 0:4]? 能理解意思上面的基礎操作就沒有白學習

msft_calls = pd.io.data.Options('MSFT', 'yahoo').get_call_data(expiry=expiry)

expiry = datetime.date(2015, 1, 17)

aapl_calls = aapl.get_call_data(expiry=expiry)

gdp = web.Data Reader("GDP", "fred",datetime.date(2012, 1, 1),datetime.date(2014, 1, 27))


還可以下載數據:

Tidying Up Your Data? 清洗臟數據

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容