全栈工程师放下大话!十分钟必定能带你入门Pandas!史上最全干货 ...

[复制链接]
oLjwRgTm 发表于 2017-12-31 05:32:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

2 }- o3 _7 o+ [% Q' W! P" k0 ^9 Z/ W9 \8 h9 u8 E& w. K- N
& I" s% M5 W4 B# w7 ^5 D4 T2 d$ s

: J  E. G7 t) G8 M
/ U' v, i; n8 ]8 L正如上图所示,列A,B,C,D都自动显示出来了,E也是(不过没显示出来),其余属性被截断了。; e2 A3 g: U$ l) W+ V7 l1 l: c
查看数据
8 Z" Y4 M5 V. f& W查看前几条或者后几条数据:
' I" o$ B3 a/ n, e/ w! x" [! a' J$ O4 j( Q- ]5 {; x
" b7 X6 W( M7 v. ?7 i# {* O
: x4 l7 ], }1 u; v9 y
) B4 V$ h# A0 d1 H* z

' I3 r, A6 \5 J+ x+ H7 H5 z7 g, M( E* m' I. Y
获取一定标签范围的数据,包含起始和结尾两条数据 (这个注意和Python的切片操作有略微不同,Python切片是不包含结尾的):小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!, b1 l+ r' f+ ^' c
. D! d6 k% O4 A0 K
使用下标获取数据. g5 I6 E4 j  H) E$ C( T2 H& n
通过整数下标来选择数据:" N% l6 H! X5 d; }5 n

5 h4 e% n: L+ z) ~- v, N
& ^8 R/ T: p! }* g' |9 r' `0 m, @, k! w- h% r

& q( ]2 S9 X: `/ X$ J7 D' _4 V, D- H1 u& a; J, A  H* n- R' M4 u+ ^* f6 a
赋值; `$ O! k1 l' B* P  e
创建一个新列并自动根据索引将数据对其:3 {' i9 c2 ~4 j- k6 B# S# k" T/ _
9 j+ E! i! K, u& G3 N4 R
使用numpy数组赋值:; k. y  P/ D9 E
1In [50]: df.loc[:,'D'] = np.array([5] * len(df))
上面操作后结果如下:: F! r& z2 F  D" d7 W) B
# 注意F列,声明时候从1月2日开始,所以第一行为NANIn [51]: dfOut[51]: A B C D F2013-01-01 0.000000 0.000000 -1.509059 5 NaN2013-01-02 1.212112 -0.173215 0.119209 5 1.02013-01-03 -0.861849 -2.104569 -0.494929 5 2.02013-01-04 0.721555 -0.706771 -1.039575 5 3.02013-01-05 -0.424972 0.567020 0.276232 5 4.02013-01-06 -0.673690 0.113648 -1.478427 5 5.0
% i: H( v$ L4 o) [- k& Y" {In [55]: df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])In [56]: df1.loc[dates[0]:dates[1],'E'] = 1In [57]: df1Out[57]: A B C D F E2013-01-01 0.000000 0.000000 -1.509059 5 NaN 1.02013-01-02 1.212112 -0.173215 0.119209 5 1.0 1.02013-01-03 -0.861849 -2.104569 -0.494929 5 2.0 NaN2013-01-04 0.721555 -0.706771 -1.039575 5 3.0 NaN( F1 m9 I% N6 q
操作
, p) t/ G( G& }5 R细节请查看Basic section on Binary Ops% n7 |9 ?9 z: s2 l* `' c8 [: X
统计数据
  }/ e4 O/ f: G7 r: f9 I, c  `3 @& z所有的操作都 排除缺失 的数据。执行一个统计函数:* j+ N1 a, q( l3 q  n/ B3 ^
+ R$ e0 a! U0 J
9 d2 h5 L2 r+ `% b# h+ g0 l
应用函数5 f6 q( z% @7 e; ^% l% l
在数据集上应用函数:
6 N( x$ n( R0 M0 _: M' ]6 y
4 D- m8 C8 R; ~  v1 `- m# V' h' I. Y# g0 y
6 A$ E% Z! h4 J0 M" ?2 a. u

; t  h% O( F: I# e/ uIn [73]: df = pd.DataFrame(np.random.randn(10, 4))In [74]: dfOut[74]: 0 1 2 30 -0.548702 1.467327 -1.015962 -0.4830751 1.637550 -1.217659 -0.291519 -1.7455052 -0.263952 0.991460 -0.919069 0.2660463 -0.709661 1.669052 1.037882 -1.7057754 -0.919854 -0.042379 1.247642 -0.0099205 0.290213 0.495767 0.362949 1.5481066 -1.131345 -0.089329 0.337863 -0.9458677 -0.932132 1.956030 0.017587 -0.0166928 -0.575247 0.254161 -1.143704 0.2158979 1.193555 -0.077118 -0.408530 -0.862495# break it into piecesIn [75]: pieces = [df[:3], df[3:7], df[7:]]In [76]: pd.concat(pieces)Out[76]: 0 1 2 30 -0.548702 1.467327 -1.015962 -0.4830751 1.637550 -1.217659 -0.291519 -1.7455052 -0.263952 0.991460 -0.919069 0.2660463 -0.709661 1.669052 1.037882 -1.7057754 -0.919854 -0.042379 1.247642 -0.0099205 0.290213 0.495767 0.362949 1.5481066 -1.131345 -0.089329 0.337863 -0.9458677 -0.932132 1.956030 0.017587 -0.0166928 -0.575247 0.254161 -1.143704 0.2158979 1.193555 -0.077118 -0.408530 -0.862495
) p. S8 K$ Q, J: D9 Y" [' ~4 F  a- `2 }3 z4 f! y! j, R
Append
' D: N( X9 ~6 P; c6 O( f追加一行到数据中:1 F0 u1 V4 ~! ]" ^. q
In [87]: df = pd.DataFrame(np.random.randn(8, 4), columns=['A','B','C','D'])In [88]: dfOut[88]: A B C D0 1.346061 1.511763 1.627081 -0.9905821 -0.441652 1.211526 0.268520 0.0245802 -1.577585 0.396823 -0.105381 -0.5325323 1.453749 1.208843 -0.080952 -0.2646104 -0.727965 -0.589346 0.339969 -0.6932055 -0.339355 0.593616 0.884345 1.5914316 0.141809 0.220390 0.435589 0.1924517 -0.096701 0.803351 1.715071 -0.708758In [89]: s = df.iloc[3]# 注意后面的ignore_index参数In [90]: df.append(s, ignore_index=True)Out[90]: A B C D0 1.346061 1.511763 1.627081 -0.9905821 -0.441652 1.211526 0.268520 0.0245802 -1.577585 0.396823 -0.105381 -0.5325323 1.453749 1.208843 -0.080952 -0.2646104 -0.727965 -0.589346 0.339969 -0.6932055 -0.339355 0.593616 0.884345 1.5914316 0.141809 0.220390 0.435589 0.1924517 -0.096701 0.803351 1.715071 -0.7087588 1.453749 1.208843 -0.080952 -0.264610Grouping9 D$ Z! a0 T! C/ ]

* Q/ @5 u$ T/ Q& b5 `6 m( W4 P
" l& l+ `6 ?9 h$ g6 a2 _+ F3 z( C: h7 S0 v3 ~; B
' C. s9 v: A, F/ ~
# C& A; ~8 O' i
* E; R3 W/ T( a$ ]* T
我们可以很简单的生成透视表:8 `5 z* G6 W: h& x
In [107]: pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])Out[107]:C bar fooA B one A -0.773723 1.418757 B -0.029716 -1.879024 C -1.146178 0.314665three A 1.006160 NaN B NaN -1.035018 C 0.648740 NaNtwo A NaN 0.100900 B -1.170653 NaN C NaN 0.536826
: T; r- F9 t8 R& ]7 G# Y' i4 i6 L
8 M5 a, P+ [/ L/ f- {+ l2 U- K: n0 \6 H. N6 [9 c
修改时间跨度:: G$ S& [4 C" G% k1 Q
#比如数据中某个月的具体日期不同,想统一成每个月1号In [117]: rng = pd.date_range('1/1/2012', periods=5, freq='M')In [118]: ts = pd.Series(np.random.randn(len(rng)), index=rng)In [119]: tsOut[119]:2012-01-31 -1.1346232012-02-29 -1.5618192012-03-31 -0.2608382012-04-30 0.2819572012-05-31 1.523962Freq: M, dtype: float64In [120]: ps = ts.to_period()In [121]: psOut[121]:2012-01 -1.1346232012-02 -1.5618192012-03 -0.2608382012-04 0.2819572012-05 1.523962Freq: M, dtype: float64In [122]: ps.to_timestamp()Out[122]:2012-01-01 -1.1346232012-02-01 -1.5618192012-03-01 -0.2608382012-04-01 0.2819572012-05-01 1.523962Freq: MS, dtype: float640 P1 I: r! g" e$ p) q
Categoricals* }+ W- X7 ~$ {: I: T

- T, \. s" D+ m3 n9 T8 T
! W8 A8 i! W% v5 S, P; g& KIn [133]: df.sort_values(by="grade")Out[133]: id raw_grade grade5 6 e very bad1 2 b good2 3 b good0 1 a very good3 4 a very good4 5 a very good
8 t: l( _- D% ~
' H) k9 y9 t& H8 f
5 I4 z# R/ Y9 Q7 t7 H2 o) W3 Y
( z/ g+ J" g# m$ ?' r. g7 O: P) ]1 ~+ w; d" h# M7 c

2 U; V6 h) {. `0 R% cHDF5格式
8 C3 L* E  E4 h4 T: {0 `' d写入:2 \0 ~" h' d/ _; E/ J0 J
1In [143]: df.to_hdf('foo.h5','df')
读取:
0 v" C: Z" l7 p( q8 x5 G5 J# n- d( P. x- F0 l
EXCEL格式
" I- y$ ?7 P9 m" c+ c/ o2 o写入:
$ u* \# J+ p) `8 l- k
1In [145]: df.to_excel('foo.xlsx', sheet_name='Sheet1')
读取:
# }0 ]/ h8 b- a4 w, k; G" T7 R) E/ J# k% O: g& `
, |9 Y3 f* [6 q* m  F# ^' a
谢谢阅读!
" n: A; j7 D) \4 F( Z& q
9 ^% x6 u$ O8 ?5 A如有侵权请联系小编删除哦!. g1 A8 ^5 o( W1 G: Z0 F+ [

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
推荐阅读更多+
阅读排行更多+
用心服务创业者
0851-88611148
周一至周五 9:00-18:00
意见反馈:admin@0851life.com

扫一扫关注我们

Powered by 童码少儿编程 X3.4© 2001-2013 0851life Inc.|网站地图