【python】《利用python进行数据分析》笔记

【第三章】ipython

C-a 到行首

C-e 到行尾

%timeit 测量语句时间,%time是一次,%timeit是多次。

%pdb是自动调试的开关。

%debug中,可以用b 12在第12行设置断点,n是执行当前行并进入下一行,

set_trace和debug函数也比较好用。 from IPython.core.debugger import Pdb

逐行分析函数性能:基于line_profiler的应用!在~/.ipython/profile_default/ipython_config.py 中添加 c.TerminalIPythonApp.extensions = ['line_profiler']

即可使用魔法命令%lprun 逐行分析函数的性能,调用语法为

%lprun -f func1 -f func2 statement_to_profile

【第四章】numpy

切片赋值可以用矢量或者标量,标量采用了广播机制。

布尔索引!True False可以用来切片,也可以和其他切片方式混用。两个布尔索引可以对应的,比如df[con1] = df2[con]是成立的。

df[:2][1:] = np.nan也是原数据上修改。

花式索引就是df[[2,3,4,1], :]这种,花式索引每次都是复制新数据!两维都花式索引比较难,需要df[[0,1]][:, [0,1]]这样,或者df[df.ix_([0,1],[0,1])]

np.where是x if con else y的矢量化版本。np.where(con=TrueFalseArray, x, y)。x, y可以是与con一样size的矢量,也可以是标量

和&,或|,非-(负号)。

np.sort返回已排序副本,就地排序会修改数组本身

arr.unique()与sorted(set())输出相似, in1d(target, base)测试成员资格,unique(x), intersect1d(x, y), ...这些都是集合运算

【第五章】pandas

有特殊的Index类,index对象不可修改,有 is_monotonic 和 is_unique 方法 。series.reindex(index)根据新的index进行重排

apply方法(输入某个函数),按照行或者按照列进行计算

默认排除na值,使用skipna=False禁用

reindex和set_index,

【第六章】数据加载

对于没有列名的csv, 两个方法header=None, names=[]

其中一列当作index, names=[xx, 'message',xx, xx, xx], index_col='message'

【第七章】数据规整化:清理、转换、合并、重塑\

pd.merge 根据一个或者多个键连接record

  如果两边键相同,通过on指定,如果键不同,通过left_on, right_on指定。

  通过how可以指定连接方式,默认是交集inner,可以选择left, right, outer  

combine_first: 填补缺失数据的方法

【第九章】数据聚合与分组运算

groupby是一种分组运算的方法,包含三个步骤:拆分-应用-合并

1、拆分:按照某个键将数据分类:data.groupby(key)

2、应用、合并:将某个函数应用并且计算grp.mean(), grp.agg(func)

【第十章】时间序列

按天group

df.index = pd.to_datetime(df.index)

df.groupby(pd.TimeGrouper('D'))

取每天的同一时间

df.loc[datetime.time(9, 30)]

按每天的同一时间group

data.groupby(data.index.time)

上一篇:《利用Python进行数据分析》笔记---第2章--来自bit.ly的1.usa.gov数据


下一篇:【Python】[面向对象编程] 类和实例