两种:一维数组型的Series对象+二维表格型的DataFrame对象
andas的索引对象index是不可变的,因此用户不能对其进行修改。
但index中可以包含重复的标签。选择重复的标签,会显示所有的结果。
目录
一、Series对象
1、Series对象创建(4种)
(1)Numpy的一维ndarray数组
(2)标量值创建
(3)字典创建
(4)列表创建
2、Series对象的基本运算
3、基本功能
二、DataFrame对象
1、DataFrame对象创建
(1)字典
(2)嵌套列表
(3)字典
2、DateFrame对象属性
2、DataFrame基本运算
(1)数据筛选
(2)数据预处理
(3)数据运算+排序
(4)数学统计
(5)数据分组和聚合
三、pandas数据可视化
一、Series对象
只能存储同一数据类型的数据 结构:index+values
a.values() #查看
a.index()
a.shape #Series对象的形状
a.name='grade' #name属性为对象&索引命名
a.index.name='科目'
a[1] #查看 切片
a[0:2]
a[['a','b','c']]
a[a>=90] #筛选
a.isnull() #isnull()检测是否为空值
1、Series对象创建(4种)
(1)Numpy的一维ndarray数组
import pandas as pd
import numpy as np
a=pd.Series(np.arange(0,5,2),index=['a','b','c'])
a
(2)标量值创建
b=pd.Series(25,index=['a','b','c'])
b
(3)字典创建
dict1={'a':1,'b':2,'c':3}
a=pd.Series(dict1)
a
(4)列表创建
b=pd.Series(data=[4,7,-5,3],index=['d','a','b','c'])
b
2、Series对象的基本运算
a=pd.Series(data=[90,86,95],index=['java','c','python'])
a+2 #整个a的值都加2
np.sqrt(a) #a的值的平方根
np.exp(a) #e的x幂次方根
a.count() #计数
a.drop(index=['java','c'])
#Series间的计算
a=pd.Series([1,2,3],index=['a','b','c'])
b=pd.Series([2,4],index=['b','c'])
a+b
#在将数据相加时,若存在不同的索引对,则结果的索引就是该索引对的并集。
a NaN b 4.0 c 7.0 dtype: float643、基本功能
# 重新索引
a=pd.Series([4,6,3,5],index=['c','d','a','e'])
a1=obj.reindex(['a','b','c','d','e'])
a1
#reindex将会根据新索引进行重排,若某个索引值当前不存在,就引入缺失值。
a 3.0 b NaN c 4.0 d 6.0 e 5.0 dtype: float64
二、DataFrame对象
一个表格型的数据结构,含有一组有序的列。 既有行索引也有列索引。
每列可以是不同的值类型(数值、字符串、布尔值等)
1、DataFrame对象创建 (1)字典dic={'a':[1,0],'b':[2,1],'c':[2,0]}
a=pd.DataFrame(data=dic,index=['i1','i2'])
a
(2)嵌套列表
a=pd.DataFrame([[1,2,2],[0,1,0]],['i1','i2'],['a','b','c'])
a
(3)字典
a={'name':['li','xu','wang'],
'year':[2019,2021,2020],
'number':[3,1,4]}
b=pd.DataFrame(a) #dataframe 会自动加入索引
b.head() #head默认选取前5行
2、DateFrame对象属性
grade={'math':[90,91,92],'english':[88,89,87]}
a=pd.DataFrame(data=grade,index=['a','b','c'])
a
a.size #元素个数,为行×列
a.shape #形状
a.loc['b'] #loc行索引查看数据
a.loc['b','math'] #行索引+列索引
a.iloc[1] #iloc通过行号、列号
a.iloc[0:2,0:1]
data={'name':['a','b','c'],
'age':[1,2,3],
'weight':[10,20,30]}
a=pd.DataFrame(data)
a
a.index.name='id' #name属性 命名
a.columns.name='item'
data={'name':['a','b','c'],
'age':[1,2,3],
'weight':[10,20,30]}
a=pd.DataFrame(data)
a[a.weight>15] #指定条件筛选
a['new']=10 #新增一列 所有元素均为10
a['age'][0]=4 #修改单个元素 直接赋新值
a.isin(['b',2]) #isin判断元素是否属于, True/False
2、DataFrame基本运算 (1)数据筛选
a.head()
a.tail(N) #返回后N行
a[m:n] #切片 选取m~n-1行
a.query('列名>value') #query 选取满足条件的行
a.query('列名==[v1,v2,……]') 选取列名值为v1、v2……的行
(2)数据预处理
#返回重复行,重复的行标记为True,不重复False
a.duplicated(subset=None,keep='first')
#subset:用于识别的重复列索引,默认为所有列
#keep='first' 表示除第一次出现外,其余相同的被标记为重复
#keep='last' 表示除最后一次出现外,其余相同的被标记为重复
#keep=False 表示所有相同的被标记为重复
#删除重复行
a.drop_duplicates(subset=None,keep='first',inplace=False)
# #keep='first' 表示保留第一次出现的重复行,为默认值
#inplace=False 返回一个副本 ,=True表示在原DataFrame上进行删除 *** 作
#填充 缺失值
a.fillna(value=None,method=None,axis=None,inplace=False,limit=None)
#value 用于填充的标量值或字典
#method 插值方式 'bfill'表示用下一个非缺失值填充 'ffill'用前一个非缺失值填充 'None'表示指定一个值去替换
#axis 待填充的轴 默认axis=0 表示行 =1为列
#limit 对于向前\后 可以连续填充的最大数量
a.drop() #删去指定的行\列
a.dropna() #删去含有缺失值的行\列
a.rename() #重命名 行索引 列索引
a.reindex() #改变索引
a.replace() #替换
#通过行\列索引 连接两个DataFrame
a.merge(df2,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'))
#df2 被合并的DataFrame对象
#how 连接方式 四种 'left' 'right' 'inner'——键的交集 'outer'——键的并集
#on 表示用于连接的行索引\列索引,若不指定,则以列名交集为连接键
#sort=False 按字典顺序排序,默认为True
#suffixes 对出现的重复列,新数据集中加上后缀(便于区分)
a.concat() #按指定轴 将多个对象堆叠 concat()不会删去重复记录
a.stack() #列 旋转成行
a.unstack() #行 旋转成列
(3)数据运算+排序
a.T #转置
a*N #所有元素×N
a+b #a和b行名和列名都相同的元素相加,其余元素用NaN填充
a.add() #元素相加
a.sub() #元素相减
a.div() #相除
a.mul() #相乘
a.apply(func,axis=0) #将func应用到行\列
a.applymap(func) #将func应用到各个元素
df=pd.DataFrame(np.arange(16).reshape(4,4),columns=list('abcd'),index=['A','B','C','D'])
df
def f(x):
return x.max()-x.min()
df.apply(f,axis=0) #求每一列元素的取值间隔
def f2(x):
return 2*x-1
df.applymap(f2)
a.sort_index(axis=0,ascending=True) #按行\列索引进行升序排序
#ascending=False 降序
a.sort_values() #按指定的列\行 进行值排序
a.rank(axis=0,method='average',ascending=True) #沿着行 计算元素值的排名
#method 'average'在相等分组中,为各个值分配平均排名 'min' 使用整个分组的最小排名
#'max'使用整个分组的最大排名 'first' 按值在原始数据中的出现顺序分配排名
(4)数学统计
a.count() #统计每列或每行非NaN的元素个数
a.describe()
a.max()
a.min()
a.sum() #返回指定轴上的元素和
a.mean()
a.median()
a.var()
a.std()
a.cov() #计算列和列之间的协方差
a.corr() #计算列和列之间的相关系数
a.corrwith(b) #计算a与b的行\列之间的相关性
a.cumsum() #对a求累加和
a.cumprod() #求累计积
(5)数据分组和聚合
分组group by 聚合 agg
——group by 分为三个阶段:分组、用函数处理分组、分组结果合并
a=pd.DataFrame({'m1':['a','b','c','a'],'m2':[1,2,2,1]})
a
group=a.groupby('m1') #按‘m1’分组
group.groups #groupby的返回值并不是dataframe格式数据
for x in group:
print(x) #显示分组内容
('a', m1 m2 0 a 1 3 a 1) ('b', m1 m2 1 b 2) ('c', m1 m2 2 c 2)
——数据聚合
a.agg(func,axis=0)
a.agg({'a':['sum','min'],'b':['max','min']}) #在不同的列上进行不同的聚合 *** 作
a.groupby('m1').agg(['sum','min'] #在分组上应用agg()
三、pandas数据可视化
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)