01
系列回顾
玩转Pandas系列已经连续推送3篇,尽量贴近Pandas的本质原理,结合工作实践,按照使用Pandas的逻辑步骤,系统地并结合实例推送Pandas的主要常用功能,已经推送的3篇文章:
玩转Pandas,让数据处理更easy系列1
玩转Pandas,让数据处理更easy系列2
玩转Pandas,让数据处理更easy系列3
以上3篇总结了Pandas主要的两个数据结构:Series(一维)和DataFrame(二维),系统地介绍了创建,索引,增删改查Series, DataFrame等常用操作接口,总结了Series如何装载到DataFrame中,以及一个实际应用多个DataFrame的实战项目例子。
值得推荐的是,Pandas广泛应用在金融,统计,社会科学,和许多工程领域。Pandas和R语言直接无缝衔接。Pandas是基于Numpy(Numpy基于Python)基础开发,因此能和带有第三方库的科学计算环境很好地进行集成。
02
Pandas核心应用场景
按照使用逻辑,盘点Pandas的主要可以做的事情:
接下来,按照以上未涉及的思路陆续推送,欢迎补充和指正。
03
多Index层级结构
Pandas中什么是有层次的数据呢? 简单来说,就是构造了一个有层次的Index实例,其他没什么不同。首先构造一个有层次的Index,如下:
#创建有层次的Index实例 index_name =['first','second'] lay_index = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] tuples = list(zip(*lay_index)) two_layers_index = pd.MultiIndex.from_tuples(tuples, names=index_name) two_layers_index
有了Index实例,充填一个8行2列的数据values就行,如下所示:
res = np.array([list(np.random.randn(8)),list(np.random.randn(8))]).T # 8行2列 pd_h = pd.DataFrame(res, index=two_layers_index, columns = ['A','B']) pd_h
得到数据如下,A, B 是列标签,first, second是Index实例的标签名称。
这块功能在实际使用中,暂时不常用,先不展开总结。
04
转化操作
拿到一个数据表后,有时需要改变数据表的形状,此时就要用到这块功能: reshaping, pivot, transpose, sort等功能。
4.1 pivot
pivot是指按照指定的Index和columns,values旋转原来的数据表。
#pivot df = pd.DataFrame({ 'foo': ['one','one','one','two','two','two'], 'bar': ['A', 'B', 'C', 'A', 'B', 'C'], 'baz': [1, 2, 3, 4, 5, 6]}) df
数据显示如下,可以看到数据的index是默认的从0开始的整数索引,columns是[bar,baz,foo],
ok,现在我想作如下转化,index设置为foo, columns设置为bar, values设置为baz列,
df.pivot(index='foo', columns='bar',values='baz')
转化后的结果如下显示:
此时这种转化,用肉眼观察,是比较合理的,但是有时候为了观察多个维度,我们可能需要大量的转化实验,比如,这样设置行、列、值
df.pivot(index='bar', columns='baz', values='foo')
得到的结果如下,看出这种转化出现比较多的None值,因为这种数据轴的设置导致的,但这是正常操作。
4.2 sort
Pandas的排序操作提供了2个主要的API,分别按照值排序和索引排序。值排序的接口:
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
例子总结里面所有可能的排序细节问题,首先构造一个DataFrame实例,如下所示:
df = pd.DataFrame({'col1' : ['A', 'A', 'B', np.nan, 'D', 'C'], 'col2' : [2, 1, 9, 7, 7, 4], 'col3': [0, 1,np.nan,np.nan, 2, 3]}) df
按照col1和col3这两列的值排序结果如下:
sort_1_3 = df.sort_values(by=['col1', 'col3']) sort_1_3
排序后的结果如下所示:
以上总结了DataFrame主要能做的事情,初步了解多层 Index是怎么回事,以及Pivot,Sort等操作接口。欢迎指正。
如想下载以上代码,请后台回复: pandas
更多文章:
深度学习|大师之作,必是精品
算法channel关键词和文章索引
逻辑回归| 原理解析及代码实现
逻辑回归| 算法兑现为python代码
决策树
对决策树剪枝
sklearn分类和回归
提炼出分类器算法
贝叶斯分类
朴素贝叶斯分类器:例子解释
朴素贝叶斯分类:拉普拉斯修正
单词拼写纠正器python实现
半朴素贝叶斯分类器
支持向量机参数求解
支持向量机之软间隔和核函数