1.什么是pandas
pandas不是指熊猫0.0,它的全称是Python Data Analysis Library 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
它使Python成为强大而高效的数据分析环境的重要因素之一。
2.导入
#pandas 源于 numpy 两个总是一起使用
import numpy as npimport pandas as pdfrom pandas import Series,DataFrame
Series 是一个类似数组的数据结构
DataFrame 数据框,类似于Excel,DataFrame组织数据,处理数据
3.Series
(1)Series创建
由列表或numpy数组创建,默认索引为0到N-1的整数型索引
obj = Series([1,2,3,4])print(obj)输出:0 11 22 33 4dtype: int64#还可以通过设置index参数指定索引obj2 = Series([1,2,3,4],index=['a','b','c','d'])obj2输出:a 1b 2c 3d 4dtype: int64特别地,由ndarray创建的是引用,而不是副本。对Series元素的改变也会改变原来的ndarray对象中的元素。(列表没有这种情况)a = np.array([1,2,3])obj = Series(a)obj输出:0 11 22 3dtype: int64obj[0]=0print(a)print(obj)输出:[0 2 3]0 01 22 3dtype: int64
由字典创建
obj = Series({'a':1,'b':2})obj输出:a 1b 2dtype: int64
(2)Series索引和切片
显式索引:
- 使用index中的元素作为索引值
- 使用.loc[](推荐)
注意,此时是开区间两边都包含
obj = Series({'a':10,'b':12,'c':17})obja 10b 12dtype: int64obj['a']输出:10obj['a':'c']输出:a 10b 12c 17dtype: int64
隐式索引:
- 使用整数作为索引值
- 使用.iloc[](推荐)
注意,此时是半开区间(前包后不包)
obj[0:1]输出a 10dtype: int64obj.iloc[0]输出:10obj.iloc[0:1]输出:a 10dtype: int64
(3)Series的基本概念
可以把Series看成一个定长的有序字典,可以通过shape,size,index,values等得到series的属性。
a={'语文': 150, '数学': 150 ,'英语' :150, '理综': 300}b=Series(a)display(b.shape,b.size,b.index,b.values)#输出结果(4,)4Index(['语文', '数学', '英语', '理综'], dtype='object')array([150, 150, 150, 300], dtype=int64)
可以通过head(),tail()快速查看Series对象的样式。
b.head(3)#输出结果语文 150数学 150英语 150dtype: int64
当索引没有对应的值时,可能出现缺失数据显示NaN(not a number)的情况。
可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据。
obj = Series([10,4,np.nan])#判断Series是否为不为null,为null返回falsenotnull = pd.notnull(obj)#如果为false将空值设为0for i,d in enumerate(notnull): if d ==0: obj[i] = 0print(obj)
Series对象本身及其索引都有一个name属性
obj.name='123'print(obj)Series.name = "Hello World"print(Series.name)输出:a 1.0b 2.0d NaNName: 123, dtype: float64Hello World
4.Series的运算
适用于numpy的数组运算也适用于Series。
Series之间的运算在运算中自动对齐不同索引的数据如果索引不对应,则补NaN。
A = pd.Series([2,4,6],index=[0,1,2])B = pd.Series([1,3,5],index=[1,2,3])display(A,B)输出:0 21 42 6dtype: int641 12 33 5dtype: int64A+B输出:0 NaN1 5.02 9.03 NaNdtype: float64
注意:要想保留所有的index,则需要使用.add()函数
A.add(B,fill_value=0)输出:0 2.01 5.02 9.03 5.0dtype: float64
今天的学习就到这里,晚安!!!