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阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容