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

[复制链接]
oLjwRgTm 发表于 2017-12-31 05:32:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
: u  v7 Q/ U# D2 a& \

' U' h- Q5 [$ M; f! x
5 s! h; D( I$ F0 _$ u) L4 m2 i* _5 W- ~% u0 R1 s# u0 Z2 s! @

* L6 g( H* I; n  d6 }% S; e% \正如上图所示,列A,B,C,D都自动显示出来了,E也是(不过没显示出来),其余属性被截断了。) v* H: ^' S1 Z9 u. y7 d# ]
查看数据
- o9 ]% ~, [: G2 `+ C2 S查看前几条或者后几条数据:( X4 }, b' c" U  N- s
9 p) x* h; Q8 R$ U# ?/ B. u* d
; v- P; A3 A9 ?. p' L, W  \- i7 T
( T# E5 |+ `0 p/ z0 X0 Y' T

) o- e& b4 I& m5 v4 U0 G
) S/ C+ t* Q+ y, n$ [
# P- }0 Z4 F* b; G4 k获取一定标签范围的数据,包含起始和结尾两条数据 (这个注意和Python的切片操作有略微不同,Python切片是不包含结尾的):小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!
5 T$ E$ @; D9 u9 b) V6 }& O! o. r& b# l! M) \
使用下标获取数据
9 O1 W; ?2 {- ^- d2 {通过整数下标来选择数据:, N' _1 n: e6 R
# t8 D- s  q2 D- ]" S& A5 j

0 c! `" S: Z* D5 F# S. u! n4 t2 R8 N* {" B* m3 _* N5 H, p4 X0 c9 m

/ h1 C4 ~- N& j) ~6 s( G% n/ g4 d; f6 D5 `, M1 Z7 o  q+ ^
赋值* _- O/ C& D3 n, D5 n9 ~3 j$ R
创建一个新列并自动根据索引将数据对其:
1 Y  q$ ]3 o* V4 q
! C0 j4 o7 N# k使用numpy数组赋值:
9 H! F5 g9 v- ~9 T- P( }
1In [50]: df.loc[:,'D'] = np.array([5] * len(df))
上面操作后结果如下:
3 Z  c' t, T- F: ~9 A# 注意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# m  u; Q0 q: [: M
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 NaN6 b6 L! e! t! A' ^
操作4 t' i# g7 I; p. W+ M' s9 [0 h
细节请查看Basic section on Binary Ops
! u1 g7 S  |# z: m3 g统计数据
% R& b+ J5 l' A8 ?+ o: s所有的操作都 排除缺失 的数据。执行一个统计函数:4 Y8 Q: Q  `- [) l% B" x
" F9 T1 w8 F  u
8 L2 E9 j/ H# F3 I8 C0 k
应用函数6 ^+ ]5 P2 C+ V" z' D
在数据集上应用函数:
1 l' {' B, y2 m, K$ ^. [8 i( K* f  n
1 v2 C2 `! `: `! A) X
8 a) v' w" o6 ~0 i  j& q8 C) m5 M/ D

5 N: i; ~1 I1 LIn [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, ^& B1 {6 C' L0 ^8 I9 P) L
" M8 _; G: E# R+ c
Append5 B6 Y1 s$ @0 U- B9 Z: t
追加一行到数据中:
% {# B; x$ V7 w$ h! h) c* s4 J" y7 P- PIn [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.264610Grouping
" J2 l1 d) Z2 |" F# w9 c* F" B* O' l9 I' `$ S/ a; t+ z6 Z- L$ [; e

( Q. y. j0 o& L4 C6 d
5 w% I8 u& t( u% _  t8 f9 k# U# R! I9 v$ D. c

7 v4 C4 y! ~0 w$ r/ D% c) A: `& U7 W8 M( S1 T# ~
我们可以很简单的生成透视表:
0 R! x( G# g2 I/ V+ UIn [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
' }) ?9 w5 e5 D9 t
; u& B% U% Z* O( ^
4 h; a( ?6 r; ]修改时间跨度:
! Q- p: ~3 ?8 e% W# c( D#比如数据中某个月的具体日期不同,想统一成每个月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: float64
" ^" |' ^2 D3 i6 j; `5 V# F" CCategoricals* t! N- t5 ]8 @/ S( ?

9 \1 G- ~$ i6 }* {$ e
* @. K, u+ I6 S5 L# V/ v- {In [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
" t) t2 H5 q* E* m  o
5 T* D! G! ?/ o8 x3 ]4 S
$ ]0 |/ B4 r5 q7 d
2 \& B$ H; r8 w' W' Y4 I' A+ h# a! E+ [0 Q* T! S8 x6 G; k
, Q  Q/ j: Z' X( n
HDF5格式% H& M" l" K: R& D2 P! D
写入:
* M# o0 G0 z% ?
1In [143]: df.to_hdf('foo.h5','df')
读取:2 s+ N8 f2 o2 F( I9 ]3 O# ]' d

1 r7 }) l! Y* `6 w9 c. K" sEXCEL格式4 j6 `1 I5 R/ Z
写入:. l& M+ k# X# i) I% ~
1In [145]: df.to_excel('foo.xlsx', sheet_name='Sheet1')
读取:
( F1 T+ D2 |5 |$ I  [6 z1 s3 K+ ~" S9 q( c  E0 @( U% o7 p7 b

; I6 z, I0 f: O3 L' ^( x, |谢谢阅读!+ L2 m7 w0 U9 a
* D# I  Y, c/ @& J
如有侵权请联系小编删除哦!9 g8 H6 |" w( [- O

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

扫一扫关注我们

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