1.pandas:
Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。
利器:
Series: 它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。
DataFrame:DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典
2.使用pandas:
1).对象创建Series
list,ndarray,元组,dict
s = pd.Series(data=list|ndarray|元组|dict,index=[....],name=‘’) # 其中ndarray可应用array的生成方法,如random.randint()产生。 # 其中index可通过index=list('QWERTYUIOP')的方式创建。
2).索引和切片
3).方法和属性
3.对象创建Series:
2种方式:
(1)方式一
import pandas as pd
list1 = [3,5,7,8,9,9,0]
s = pd.Series(data = list1,index=['A','B','C','D','E','F','G'],name='level')
# 此种方式,list1增减元素,不影响s。(此次可温习深浅拷贝)
(2)方式二
import numpy as np
arr = np.random.randint(1,30,size=10)
pd.Series(arr) # 如果修改元素则Series受到影响
# 元素np.nan 显示NAN
(3)方式三:字典创建对象:
dict1 = {'python':100,'java':99,'C++':89}
pd.Series(data=dict1)
# 如出现空值,会显示NaN :not a number(浮点类型)
4. 索引和切片
创建series
import pandas as pd
import numpy as np
s1 = pd.Series(data=np.random.randint(1,30,size=10),index=list('ABCDEFGHIJ'))
s1#
索引和切片
(1)显示索引:
- 获取单个元素
s['A'] # 27
s.loc['A'] # 官方推荐 # 27
- 获取多个元素:
s.loc[['A','B','A']] ----> 返回值是Series类型的 # 可取重复元素
s1.loc[[True,False,True,False,True,False,True,False,True,False]]
# 可以使用bool的列表获取元素,但是bool列表的长度必须要与s1对象的元素个数一致
(2)隐式索引 0~n-1 元素A-J对应隐式索引0-9
s[0] # A
s.iloc[0] # 官方推荐
获取多个元素:
s.iloc[[0,5,7]] # 可取重复元素
(3)切片:
- 显式:
s1['E':'H']
s1[::2]
s1[::-1] # 步长-1,反向取
s1['B'::3] # 步长为3
-隐式:类似列表
5.方法和属性;
index values size shape(5,)
s.size # 属性:获取元素得到个数 # 如4
s.values # 得到值:如:array([150, 150, 150, 300], dtype=int64)
s.shape # 属性: 获取形状 如:(4,) 4行1列
Series方法:
s = pd.Series(data=np.random.randint(1,10,size=6),index=list('CDFABE'))
head(n) 获取前n个元素 s.head(4) # 如不传参数,默认5个数据。
tail(n) 获取后n个元素 s.tail(2)
sort_index(ascending=False) 降序 #s.sort_index(ascending=False)
sort_values(ascending=True) 默认是升序 # s.sort_values()
value_counts() 统计值元素的个数 s2.value_counts()
unique() 去重 # s2.unique()
nunique() 去重后的数量
isnull() NaN
notnull()
r.isnull().any() # any() 判断整个数组中是否至少有一个符合条件True,则返回结果是True,否则返回False
# all() 判断整个数组中是否全部满足条件,如果全部满足则返回True,否则返回False
补充:
all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False。
any()函数用于判断整个数组中的元素至少有一个满足条件就返回True,否则返回False。
# 切片和索引:例:
s = pd.Series(data={ "语文":150,"数学":150,"英语":150,"理综":300})
(1)得到: 数学 150
s.loc["数学"] s.iloc[1] s["数学"] s[1] s[[False, True, False, False]]
s[s.index=='数学']
详解:# s.index # 属性之一 可得到:Index(['语文', '数学', '英语', '理综'], dtype='object')
# s.index=='数学' # 得到 array([False, True, False, False])
# s[s.index=='数学'] # 得到 数学 150 dtype: int64
(2)得到 语文 150 数学 150 英语 150
s['语文':'英语'] s.loc['语文':'英语'] s[:3] s.iloc[:3]
s[[True,True,True,False]] s[s.index!='理综']
s[s.values!=300]
# 详解: s.values 得到:array([ True, True, True, False])
# s.values!=300 得到:array([ True, True, True, False])
6. Series的运算:
两个series对象可以进行基本的+-*/运算 # # add() sub() mul() div() mod() 类似: + - * / % 如:python.add(java) 类似于 python+java
series+1 广播机制
series+ndarray 形状相同才可以加法操作 如:s3+arr
series+series:# 在进行加法操作的时候都是索引一致的才会进行相加
mean() # python.mean()
max()
min()# python.min()
python.loc[python>python.mean()]
s1.count() 计数
例:
解答如下: