pandas:把python变成小型数据库,小型Excel等等,功能强大
toyiye 2024-09-08 09:54 3 浏览 0 评论
pandas全称及说明
没找到pandas缩写的定义,我自己猜了一个,应该八九不离十吧。Python ANalysis DAta tookitS. pandas是一个开源的遵循BSD license的库,支持高性能,易用的数据结构和数据分析工具。目前最新稳定版本是v0.22.0(2017.12.29)
安装方法
conda install pandas
或者pip install pandas
如果下载比较慢,可以考虑直接下载安装文件pandas-0.22.0-cp27-cp27mu-manylinux1_x86_64.whl
然后安装sudo pip install wheel 之后, sudo pip install pandas-0.22.0-cp27-cp27mu-manylinux1_x86_64.whl 即可安装完成。下面开始pandas之旅。
数据结构介绍
pandas中有两类非常重要的数据结构,即序列series和数据框dataFrame。series类似于numpy中的一维数组,特别之处在于它可以通过索引标签的方式获取数据,还具有索引的自动对齐功能;dataframe类似于numpy的二维数组,当更加灵活。
首先把下列三个库import进去,如果出现问题,请根据提示安装相应模块。例如python-tk等。
>>> import matplotlib.pyplot as plt
>>> import pandas as pd
>>> import numpy as np
先看series的创建和使用
>>> arr1=np.arange(10)
>>> arr1
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> type(arr1)
<type 'numpy.ndarray'>
>>> s1=pd.Series(arr1) #通过传入numpy的一维数组对象创建series
>>> s1 #series的索引自动从0开始。
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
>>> type(s1)
<class 'pandas.core.series.Series'>
另外还可以通过字典的方式创建series
>>> dic1={'a':10,'b':20,'c':40}
>>> dic1
{'a': 10, 'c': 40, 'b': 20}
>>> type(dic1)
<type 'dict'>
>>> s2=pd.Series(dic1)
>>> s2 #从这里看series与字典更接近,都有索引。
a 10
b 20
c 40
dtype: int64
我们来看一下series的索引具体是什么
>>> s1.index
RangeIndex(start=0, stop=10, step=1)
>>> s2.index
Index([u'a', u'b', u'c'], dtype='object')
有了索引就可以通过索引访问数据了。
>>> s1[3]
3
>>> s2['b']
20
>>> s1[[1,3,5]]
1 1
3 3
5 5
dtype: int64
还有一种创建series的方法
>>> s5=pd.Series(np.array([10,15,20,30,55,80]),index=['a','b','c','d','e','f'])
>>> s5
a 10
b 15
c 20
d 30
e 55
f 80
dtype: int64
>>> s6=pd.Series(np.array([12,11,13,15,14,16]), index=['a','c','g','b','d','f'])
>>> s6
a 12
c 11
g 13
b 15
d 14
f 16
dtype: int64
此时s5和s6的索引不相同,把他们相加会出现什么情况呢?
>>> s5+s6 #结果就是索引值对应的数据相加,找不到对应的索引值的就返回NaN。
a 22.0
b 30.0
c 31.0
d 44.0
e NaN
f 96.0
g NaN
dtype: float64
series比较好理解,因为他是一维的。那么数据框呢?它有行索引和列索引。
>>> arr2=np.array(np.arange(12)).reshape(4,3)
>>> arr2
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> df2=pd.DataFrame(arr2)
>>> df2 #看df2的值时,一定要注意,最上面一行时列索引,最左边一列是行索引。
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
>>>
类似数据库操作的功能
pd.io.parsers.read_csv可以直接从csv文件中读出内容并组成一个DataFrame对象。我们假设有一个student.csv文件。
student = pd.io.parsers.read_csv('student.csv')
查询数据的前5行或末尾5行
student.head()
student.tail()
查询指定的行
student.ix[[0,2,4,5,7]] #这里的ix索引标签函数必须是中括号[]
查询指定的列
student[['Name','Height','Weight']].head() #如果多个列的话,必须使用双重中括号
也可以通过ix索引标签查询指定的列
student.ix[:,['Name','Height','Weight']].head()
查询指定的行和列
student.ix[[0,2,4,5,7],['Name','Height','Weight']].head()
以上是从行或列的角度查询数据的子集,现在我们来看看如何通过布尔索引实现数据的子集查询。
查询所有女生的信息
student[student['Sex']=='F']
查询出所有12岁以上的女生信息
student[(student['Sex']=='F') & (student['Age']>12)]
查询出所有12岁以上的女生姓名、身高和体重
student[(student['Sex']=='F') & (student['Age']>12)][['Name','Height','Weight']]
上面的查询逻辑其实非常的简单,需要注意的是,如果是多个条件的查询,必须在&(且)或者|(或)的两端条件用括号括起来。
大家体会一下,这些操作和数据库的操作是不是很类似?
强大的统计功能
另外pandas还提供了许多统计函数:
d1.count() #非空元素计算
d1.min() #最小值
d1.max() #最大值
d1.idxmin() #最小值的位置,类似于R中的which.min函数
d1.idxmax() #最大值的位置,类似于R中的which.max函数
d1.quantile(0.1) #10%分位数
d1.sum() #求和
d1.mean() #均值
d1.median() #中位数
d1.mode() #众数
d1.var() #方差
d1.std() #标准差
d1.mad() #平均绝对偏差
d1.skew() #偏度
d1.kurt() #峰度
d1.describe() #一次性输出多个描述性统计指标
在Excel中有一个非常强大的功能就是数据透视表,通过托拉拽的方式可以迅速的查看数据的聚合情况,这里的聚合可以是计数、求和、均值、标准差等。
pandas为我们提供了非常强大的函数pivot_table(),该函数就是实现数据透视表功能的。
pandas可以灵活的解决很多工作中的数据处理、统计分析等任务。更详细的介绍,请自行搜索pandas官方网站。
相关推荐
- # Python 3 # Python 3字典Dictionary(1)
-
Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...
- Python第八课:数据类型中的字典及其函数与方法
-
Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...
- Python中字典详解(python 中字典)
-
字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...
- Python3.9又更新了:dict内置新功能,正式版十月见面
-
机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...
- Python3 基本数据类型详解(python三种基本数据类型)
-
文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...
- 一文掌握Python的字典(python字典用法大全)
-
字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...
- 超级完整|Python字典详解(python字典的方法或操作)
-
一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...
- Python3.9版本新特性:字典合并操作的详细解读
-
处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...
- python 自学,字典3(一些例子)(python字典有哪些基本操作)
-
例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...
- Python3.9中的字典合并和更新,几乎影响了所有Python程序员
-
全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...
- Python3大字典:《Python3自学速查手册.pdf》限时下载中
-
最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...
- python学习——字典(python字典基本操作)
-
字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...
- 324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典
-
如何入门学习python...
- Python3.9中的字典合并和更新,了解一下
-
全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...
- python3基础之字典(python中字典的基本操作)
-
字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- # Python 3 # Python 3字典Dictionary(1)
- Python第八课:数据类型中的字典及其函数与方法
- Python中字典详解(python 中字典)
- Python3.9又更新了:dict内置新功能,正式版十月见面
- Python3 基本数据类型详解(python三种基本数据类型)
- 一文掌握Python的字典(python字典用法大全)
- 超级完整|Python字典详解(python字典的方法或操作)
- Python3.9版本新特性:字典合并操作的详细解读
- python 自学,字典3(一些例子)(python字典有哪些基本操作)
- Python3.9中的字典合并和更新,几乎影响了所有Python程序员
- 标签列表
-
- r语言矩阵 (127)
- browsererror (114)
- exportexcel (119)
- cv2.bitwise_not (137)
- dump命令 (128)
- es6concat (126)
- heapify (127)
- java.security.egd (130)
- javax.annotation (117)
- jsstringsplit (117)
- js数字 (115)
- maven编译 (132)
- mysqlleft (128)
- nodejsbuffer (149)
- org.apache.commons.httpclient (126)
- org.jsoup (141)
- org.springframework.web (128)
- robotframework-ride (115)
- setnocounton (141)
- socket.gethostbyname (122)
- sqlmid (121)
- time.strptime (133)
- vscode格式化 (125)
- win32con (129)
- window.localstorage (126)