资讯专栏INFORMATION COLUMN

Python数据分析

Chaz / 2623人阅读

摘要:为了解决这一矛盾,同时扩充数据类型,以下简称就应运而生了。在数据分析大数据机器学习,神经网络方面都可以看到的身影。元素查找有以下列表我们可以使用库进行信息提取除此之外,我们还可以定义一个函数这样,将会使用中的数以的返回值作为判断依据。

前面

Python作为一种弱类型语言,虽身带高效开发的BUFF,但同时也有着不出众的运行性能。由于数据类型的判断是在解释器内部进行,所以对于每一个变量操作后都要重新判断数据类型,这势必增加解释器的负担。为了解决这一矛盾,同时扩充Python数据类型,numpy(以下简称np)就应运而生了。np不仅提供了诸如整数数组,线性方程、矩阵的相关数据类型,还可以进行一系列的操作运算,同时由于底层代码用C编写的,所以运行起来性能也不错。在数据分析、大数据、机器学习,神经网络方面都可以看到np的身影。在学习np之前,先来补充python的其它常用数据技巧:

数组解压
>>>list1 = [1,2,3,4,["a","b","c"]]
>>>var1, var2, var3, var4, vars1 = list1
1 2 3 4 ["a", "b", "c", "d"]

通过上面这种方法可以使用多个变量去接收一个list(或者tuple)结构。
当然,我们知道Python可以使用星号+变量名来将多出的元素保存到一个元组中:

>>>*vars1, var1 = list
>>>vars1, var1
([1, 2, 3, 4], ["a", "b", "c", "d"])

可以看出使用星号后,只会为list最后几个元素保留,其它元素都归星号的元素接收,以下写法更加明显:

>>>var1,*vars1 = list1
>>>var1,*vars1
(1, 2, 3, 4, ["a", "b", "c", "d"])

继续多分配几个数组:

>>>var1,var2,var3,*vars1 = list1
>>>var1,var2,var3,vars1
(1, 2, 3, [4, ["a", "b", "c", "d"]])

可以看出星号所包含的变量总会在最后被分配。
这个方法有什么实用意义呢,比如有以下字符串:

"By777:20:Python:Linux:Web"

可以使用上面的方式来提取有用的信息:

>>>str = "By777:20:Python:Linux:Web"
>>>name, age, *tools = str.split(":")
定长列表

定长列表常常用来处理消息队列,作用类似于栈,我们可以使用下面方式来很方便的使用消息队列:

>>>from collections import deque

deque可以看作list的加强版本,可以设置最大长度:

>>>d = deque(maxlen=10)
>>>for i in range(12):d.append(i)
>>>d
deque([2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

可以看出第11个元素将第一个元素1压了出去。
当然我们还可以使用appendleft方法逆向压入构建逆序。

元素查找

有以下列表:

>>>list2 =list(range(5))
>>>list2
[0, 1, 2, 3, 4]

我们可以使用heapq库进行信息提取:

>>>import heapq
>>>heapq.nlargest(3,list2)
[4, 3, 2]

除此之外,我们还可以定义一个函数:

>>>def myfun(c):
>>>if c>50:
>>>    return c**0.5
>>>return c
>>>heapq.nlargest(2,list2,key=myfun)
[4, 3]

这样,将会使用list中的数以key的返回值作为判断依据。

多值映射
>>>from collections import defaultdict
>>>d = defaultdict(list)
>>>d
defaultdir(list,{})

这样我们就构建了一个默认的key对应values默认为list类型的字典
那么我们就可以继续进行赋值操作:

 >>>d["a"].append(1)
 >>>d
defaultdict(list, {"a": [1]})
……
>>>d
defaultdict(list, {"a": [1, 1, 2]})

同样,也可以定义为set类型:

>>>d_set = defaultdict(set, {})
>>>d_set["a"].add(1)
 >>>d_set
 defaultdict(set, {"a": {1}})
有序字典
>>>from collections import OrderedDict

使用有序字典的好处是的键值的顺序是按照添加的顺序进行的:

>>>od = OrderedDict()
>>>od["a"] = 1
>>>od["c"] = 3
>>>od["d"] = 2
>>>od
OrderedDict([("a", 1), ("c", 3), ("d", 2)])    

如果使用默认字典对比明显:

>>>d = {}
 >>>d["a"] = 1
 >>>d["c"] = 2
 >>>d["b"] = 3
 >>>d
{"a": 1, "b": 3, "c": 2}
字典运算

Python原生字典是可以进行诸如+、-、&、min、zip等运算的:
但是原生字典和OrderedDict不能直接运算:

>>>d_cm -od
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in ()
----> 1 d_cm -od
TypeError: unsupported operand type(s) for -: "dict" and "collections.OrderedDict"

我们要使用items方法:

>>>d_cm.items() - od.items()#只存在与d_cm不存在与od的元素
{("bar", 2), ("foo", 1), ("script", 3), ("test", 4)}
>>>d_cm.keys() & od.keys()

此外,还有一下操作:

>>>d_cm = {"bar":2,"foo":1,"script":3}
>>>min(d_cm,key=lambda k:d_cm[k])#需要通过函数
"foo"
>>>sorted (d_cm,key=lambda k
["foo", "bar", "script"]
>>>min(zip(d_cm.values(),d_cm.keys()))
(1, "foo")

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40777.html

相关文章

  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 学习Python:做数据科学还是网站开发?

    摘要:属于前一种,而且日益被用于数学计算机器学习和多种数据科学应用。近来,由于拥有多个针对机器学习自然语言处理数据视觉化数据探索数据分析和数据挖掘的插件,丰富的数据科学生态体系得到了较大的发展,甚至有将数据科学社区化的趋势。 译者注:本文的英文原文地址是:Python for Data Science vs Python for Web Development,发布时间是10月29日。译者一...

    neu 评论0 收藏0
  • 关于Python的三个谎言,别再盲目学Python

    摘要:关于的三个谎言,你一定要清楚。这是的整个知识体系图谱,对于新手来说,没必要学那么多。第四自动化测试一切关于自动化的东西,似乎都可以满足,可以满足大多数自动化工作,提升工作效率。这都是正常的,千万别急着否定自己,怀疑自己。 ...

    TZLLOG 评论0 收藏0
  • 细数Python三十年技术演变史——萌发于小众,崛起于AI

    摘要:作者宋天龙来源科技大本营导语一切都始于年的那个圣诞节,的诞生并不算恰逢其时,它崛起充满了机遇巧合,也有其必然性。年的圣诞节,开始编写语言的编译器。年发布的标志着的框架基本确定。年月发布了系列的最后一个版本,主版本号为。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龙来源 | AI科技大本营 ...

    tuniutech 评论0 收藏0
  • Python与R、Matlab的对比

    摘要:我们来看一下美国相关专业人员对两者的对比,只是粗略而不精准的翻译一下。小结其实在写这篇文章之前,我就问过一下包括清华在内的学校以及一些数学专业的学生,和还是占主流,但是经过一番调查发现在美国在数据科学数学等方面好像渐成压倒性的优势。 作为一枚程序员,想要研究Python编程语言与数学学习(教学)的结合,就不能不了解以及比对一下其他数学学习与应用的解决方案,比如R语言、Matlab等数学...

    yunhao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...

    lifesimple 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<