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

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

( X: m* u' Z/ _2 J# j
4 R- p9 O) i7 f1 Q# |5 n  c* n9 |5 K% p; G! q! \9 b) {
* `6 {6 L$ C- ?; G
7 G, u5 ]% c9 K
正如上图所示,列A,B,C,D都自动显示出来了,E也是(不过没显示出来),其余属性被截断了。
6 v4 [; I2 W) c3 M查看数据
  m7 ]- c7 m4 p* q4 a查看前几条或者后几条数据:
& O$ l, Z0 M9 I
# ^. }* @& @1 J; k) a) ?0 A! b1 |3 i
, i' {  t6 m# ^7 [9 g0 T
; _/ V) W" e1 L- Q9 S9 N

, b6 x* c! ]7 K# Q& l5 D9 n8 W0 G" f5 Y2 e" F+ q  p
获取一定标签范围的数据,包含起始和结尾两条数据 (这个注意和Python的切片操作有略微不同,Python切片是不包含结尾的):小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!
" A2 |7 E" G# R
. z0 a# A" e) y# j4 N使用下标获取数据
" W0 w1 L4 U7 D" |8 p0 L, k5 S通过整数下标来选择数据:$ k& u7 ?* v4 \! s1 u- {

9 a' t' T' i; O$ z
; g# B+ P/ C) H" g
' g$ g0 `5 G# l! a) [" ~0 K- W% p! v* b0 o7 o- u5 g2 ~; u5 r8 K
' W5 @0 U. m, W
赋值
5 V8 C6 J* n- U, T3 b1 b. u# ^9 @8 c创建一个新列并自动根据索引将数据对其:
4 {# z" E! o' _  d
# m; T& e* C4 v5 a* i; Y使用numpy数组赋值:0 R$ A5 T& k4 X" m3 E) M
1In [50]: df.loc[:,'D'] = np.array([5] * len(df))
上面操作后结果如下:
: Q) C/ @, e+ l# 注意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
0 C6 O5 Z$ f+ {$ [! I7 CIn [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
2 R/ |. c3 w7 }! ~) e7 `; p操作$ o/ P& I' S9 x% |$ f+ M+ x
细节请查看Basic section on Binary Ops
, c# K7 q: {9 P) R* U% k0 g统计数据( G, |  \1 \8 {+ _" g
所有的操作都 排除缺失 的数据。执行一个统计函数:/ R: |4 h+ J; w/ j3 m

" M8 s' L6 k5 ^; c1 y6 |7 V3 m/ G: u
应用函数$ ]& j& |, P, d$ A% A
在数据集上应用函数:9 [) B% w: x: D( @( _: ~  u
9 K$ A* b1 J: I
0 B7 @6 R9 u9 n* O- j- [
- X: ^7 w9 [5 i+ z" u! v7 F
) L3 T6 {  P# G
In [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+ x+ ^! P1 m; k5 ?# x
" }9 r& V# \( [$ U
Append' n" q1 z7 Q& Q+ u$ H
追加一行到数据中:
+ M% _  S% d6 G- E( x/ O; @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.264610Grouping
; Y& ^% a. |& d/ I7 C! N6 c% w8 Q3 I, Y% Z

7 K- x. X' j: G6 R( H3 G7 n% n1 x2 d9 D2 }' ]; d
0 V* R+ `: B/ A# H* ]

0 ^1 J, F$ P" ~# g' ?3 R* Z
$ ~5 g& J1 |, p+ K0 y我们可以很简单的生成透视表:
" H6 _# T) ^5 ]- V8 O" A6 NIn [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
  {5 A# r+ I; b+ U1 L4 O" d
% ^  E) n! a) U, d; x! s! _3 V; ]7 g+ @2 X* Z9 ]1 v
修改时间跨度:
! B. j/ P. k) y: r  i6 N4 S#比如数据中某个月的具体日期不同,想统一成每个月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
4 z) A8 r6 u8 LCategoricals
6 H' _: `6 |& b1 J8 T& ^7 ]- X
5 [7 p: h2 Q9 |# U, ?1 x4 E1 J) ]1 _# Y. K" h" n# [6 y
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" E6 U% `( m3 k. Q# h+ H7 z) V# o

1 c0 z; X4 N6 e* p' Z
& _. p& i  c! D
- D0 M$ k8 C3 W! o# {/ a- _7 H! }$ G8 H3 }8 W+ o. u( x

  [- v( I2 z# m' \( KHDF5格式
9 U' D3 }/ ?! B* f) t- R写入:
+ V# M" i  I2 V6 ^, O& u# S4 [! X  e
1In [143]: df.to_hdf('foo.h5','df')
读取:
" O* _, ]# [# C1 @$ L, K; Y% m) s" O
EXCEL格式
# b; @1 ]  H& |' g写入:/ v+ g/ {' ^0 t8 q, }0 F
1In [145]: df.to_excel('foo.xlsx', sheet_name='Sheet1')
读取:
& A2 Q2 z* R; p' y$ [! @  ^% H6 S% h- k: ~% H7 Z
) O" t0 n: ~$ A9 K7 x3 q
谢谢阅读!
/ |; i! P, {. q2 z2 d8 ^
. Q% B0 k3 h. L) u如有侵权请联系小编删除哦!8 r0 @  v2 M9 `3 ?

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

扫一扫关注我们

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