【基础知识】pandas入门

【基础知识】pandas入门,第1张

两种:一维数组型的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: float64
3、基本功能
# 重新索引
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数据可视化

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/904844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存