
尝试了很多方向,有点原地打转。想来在这个知识经济时代,大概是知识不够了。2019颠簸起伏。年末的时候,一个惊喜,找到一个培训班儿。在不菲价格的压力下,沉心学习一下。这就是很熟悉的,办了很贵的健身卡的场景。


2020年,开年全国一片宁静。一个很好的连续学习时光。吹着海风,赏着花,我认认真真的每天学习8小时。
言归正传的分割线
pandas是python的一个三方包。最初是用作金融数据分析的。是一个程序员的excel。
pandas的核心构成
pandas处理的数据,有两种核心格式 - 序列和数据帧。之所以叫序列,主要是因为,在列表的基础上,又增加了一个序数。这种格式的数据,比较适合处理如时间序列这样,具有先后顺序的数据。数据帧长得跟excel的表单一样,对于程序员/数据分析师来说,可以由序列组合而成。
数据工程师的pandas
作为程序员,学习数据结构,一般规律是,要掌握以下3个核心要点:
1. 结构如何及如何构造
一个序列的结构,大概是如下图所示,包括这些内容:
axes - list。在序列里只有一个子元素:axes[0];也可以用index来引用到。axes[0]和index是引用的是同一个东西。代表这个序列的序号的列表。序号值在生成之后,只可以一次性全部修改。通过 reset_index方法,或者是 index=[...],而不能单个修改。
values - numpy.ndarray。就是这个序列的值。
序列本身和index都有一个name属性。

一个数据帧的结构,大概如下图:

也有axes,values,name。axes有两个元素 axes[0]就是index,也有name属性。axes[1]就是columns,没有name属性。
可以说,pandas为Series和DataFrame提供了基本一致的结构。
想要创造一个Series或者DataFrame,也基本一致。从List,从numpy.ndarray,从Dictionary都可以构造出来。又如前所述,DataFrame也可以从List of Series构造
2. 如何索引(获取)这个结构里的单个数据元素
用 obj.loc/obj.iloc获取 #obj是Series/DataFrame。实际上都是在axes上操作-这句划重点。如果index是个RangeIndex类型,那么就可以用 obj[#]获取。如果是由一个['a', 'b', ...,'xxx'] 这样的字符数组构成的index,则用obj['x']这样的方式获取。
另外值得注意的是,dataFrame[#]这样的方式,是按照列获取数据,返回一个Series
3. 如何最高效的操作这个整体结构
操作的对象,可以是Series+Series/DataFrame+DataFrame/Series+DataFrame
操作的方法,可以是map,apply,applymap。这三个方法,针对的都是values,当我们指定axis的时候,记得是作用在values里面的元素上。
操作的方法,还可以是 concat, merge, 也有axis参数。这时候,记得作用的对象,是axes
数据分析师的pandas
而从数据分析师的角度,又需要了解:
1. 数据输入输出
pandas.read_csv
dataFrame.to_csv
2. 排序
obj.sort_index / obj.sort_values(by=''/by=['',''], ascending=True/False)
3. 数据清洗
obj.isnull().any / obj.fillna / obj.dropna / obj.ffill / obj.bfill
obj.replace(orig, target) / obj.replace(lista, listb) #互换 / obj.replace(dic) # key-value互换
obj.duplicated() / obj.duplicated(subset=) / obj.drop_duplicate(keep='last')
4. 数据的整体特征 - MAD median average derivation。 可以理解为一个一阶的方差。
后边这部分,写得比较潦草。不过也是比较全面的介绍了pandas的基础功能。等有心情了再补全
网友评论