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

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

2 U" N! N7 E0 A4 d! U
' \+ {; L" ]) l  u0 w1 n3 e, r- z- g  P2 `! v7 A

# o. [% T8 g" M: f+ J
" L  Q: y0 E6 ^& K正如上图所示,列A,B,C,D都自动显示出来了,E也是(不过没显示出来),其余属性被截断了。
. Z$ w( E# c- D查看数据
! J' D: c) E* v: D+ y+ J$ p查看前几条或者后几条数据:
, }9 ~& t$ q5 x* D+ F2 `' Z
7 g7 H( ]* Y: w" i; b+ ~: y# x0 V
; P- \: a: U- @( r1 z- M: l& e8 A0 W9 s
' G$ Y. F  r, X" h4 Q7 |: n- \) e

$ P& n7 l% U# d+ M& n3 Q3 x1 N7 P( `/ B& c+ g6 [& k* q3 a) p: }
获取一定标签范围的数据,包含起始和结尾两条数据 (这个注意和Python的切片操作有略微不同,Python切片是不包含结尾的):小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!
# A4 C- v2 D+ {' r% P0 f) R( E9 \5 V' s
使用下标获取数据* v7 m6 s: r$ ~7 a
通过整数下标来选择数据:
6 F. n1 n' R! r0 g# J# x: c) @) u  J# B* U! y4 l2 Y' z5 T

. |5 e+ x0 w! p( Z1 Q# b6 B& M3 d! H) {$ J7 e" k. a% @
. `) O/ v) ]& L: U% G; e. j: B" `
( P9 f. ]4 r) o: W
赋值
3 r6 w0 h* S$ _7 [& t9 {3 Z0 Q. \创建一个新列并自动根据索引将数据对其:
  c7 m# I" c$ s* [( X  ?3 V2 {4 W/ K8 W+ E& \4 o
使用numpy数组赋值:0 V0 `7 v0 p( n# {* U& |
1In [50]: df.loc[:,'D'] = np.array([5] * len(df))
上面操作后结果如下:3 F5 ]6 \8 P6 D7 D* x: ]- v
# 注意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
* ^- U' J" W8 D) XIn [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( \$ w9 t# Y2 F- c- v7 Z+ b
操作
& y* u+ a5 f9 E: t4 W细节请查看Basic section on Binary Ops$ Q, w$ U! V- y1 j$ V3 B" \
统计数据
3 g% U- ?2 }: M1 y; Q0 W所有的操作都 排除缺失 的数据。执行一个统计函数:9 D$ s1 C3 d! M3 s/ U

0 {9 I) D5 s: f  S0 q) f, R- G  t- Z* P( J+ r$ v
应用函数$ a" U3 X- U8 U3 H2 z8 I
在数据集上应用函数:/ p. B; T7 m8 M7 j' X

, ]  Q, l9 _$ C: G2 j( G0 ^& R! c  f
0 j  w& O7 f! x+ x4 j: y' h$ Y# H3 |. a+ F& F. Z
6 l. U& w. w" W: _. U
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
4 s0 V' F. K0 k: \/ m0 C
4 a  q$ M9 L9 t! qAppend
1 P$ ]9 \2 Q& }, a- B/ x追加一行到数据中:
7 n: S$ p6 K, y+ |; s1 RIn [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" d% m% e8 y3 _/ q
+ m, z  I4 C) I( _  u) W! z

- M; Z1 [# M! y& e( t7 w# g* \) X- ~& z1 }+ p. N
- C# N; `# |/ N1 v! s0 _

2 g/ m# |! d8 ^  e' \' Z; [$ D  H) q2 X7 \/ @$ v+ N9 U
我们可以很简单的生成透视表:5 E5 `" x5 L" C, ?' k" O( P
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
6 \7 [  T& X3 k/ N7 \9 z3 A
: x2 Q* D; f+ C( }! E4 [
6 O- W, m1 Z) w- s: ~4 O修改时间跨度:& `$ q' x# X& O& n2 o1 T
#比如数据中某个月的具体日期不同,想统一成每个月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: float641 e/ c" E) w0 `7 q% X" r
Categoricals* _/ c4 x0 O2 G) B( ]
% G# G! X  ~( ^: M3 h
2 Q6 v/ M' k% U6 ]8 y" Z
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 good3 m( v# x+ e& ?2 z# j# B' \! t& V

9 h8 z! C) ~1 m4 M: r. |$ o" G' X0 x7 c+ v6 ~, D5 P' ?& U8 P" i
1 a& O7 \; T: |
8 h/ t6 A$ |( f* B
4 ?' P& ?* w9 }8 [6 j
HDF5格式& U7 X1 R) L" H; x% K
写入:# a/ Z$ a2 B6 x
1In [143]: df.to_hdf('foo.h5','df')
读取:& h" T  [3 v. u- p& a& ]% H
1 I( Z: K- n+ }0 ?* c
EXCEL格式
" o) @+ i& ]# Z! T3 A. l3 n写入:# H3 X: |  G' \. p! |
1In [145]: df.to_excel('foo.xlsx', sheet_name='Sheet1')
读取:8 E1 q; g+ H* Y: J+ B+ O4 N8 u4 D  b

. l" a% \( n; o4 `6 r8 b
* }$ P  x1 e; a9 g8 I& u谢谢阅读!5 j( W5 i3 P; [

% T  m( L0 B1 J. G如有侵权请联系小编删除哦!
' x2 h8 S5 z: c

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

扫一扫关注我们

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