pandas最基础知识-适合新人学习

pandas中的series的建立

  1. 先说说series ,series由numpy建立,如下;
#series的建立
##通过numpy的一维数组建立
se = Series(np.array([1,2,3,4]))
print("通过numpy的一维数组建立\n",se)
##通过列表直接建立 优选
se = Series([1,2,3,4])
print("通过numpy的一维列表建立\n",se)
print("输出se的值:",se.values)
print("输出se的索引:",se.index)
print("输出se的数据类型:",se.dtype)
##通过字典创建
dd = {'甲':1,"乙":2,"丙":3,"丁":4}
se = Series(dd)
print("通过字典来创建se:\n",se)

结果如下:
在这里插入图片描述
2.series索引,series索引和列表索引相似,如下所示:

#对series的index索引进行赋值
se = Series([1,2,3,4])
print("对index进行赋值之前:\n",se)
se = Series([1,2,3,4],index=['甲','乙','丙','丁'])
print("对index进行赋值之后:\n",se)
se.index = ['A','B',"C","D"]
print("对index进行修改之后:\n",se)

结果如下:
在这里插入图片描述
3.给series赋值name属性

#给series赋值name属性
se = Series([1,2,3,4],index=['甲','乙','丙','丁'])
se.name = "编号"
se

结果如下:
在这里插入图片描述
写一个例子帮助理解,如下所示

#题目     1、创建一个series  index是 宝马 奔驰 凯迪拉克 奥迪    value随便 
#         2、再把 index改成  宝马3系 奔驰c级,凯迪拉克 CT5  奥迪 a4  
#         3、并赋值 name为  汽车售价
se = Series([1,2,3,4],index=['宝马','奔驰', '凯迪拉克', '奥迪'])
print(se)
se.index = ['宝马3系', '奔驰c级','凯迪拉克 CT5',  '奥迪 a4']
print(se)
se.name = '售价'
print(se)

结果如图:
在这里插入图片描述
4.pandas最常用的两个属性,用于检查数据

#常见使用的属性
se.head(2) #查看头2行的元素
se.tail(2) #查看末尾2行的元素

5.Series的索引以及series的基础运算

se = Series([329000,270000,279000,260000],index=['宝马','奔驰', '凯迪拉克', '奥迪'])
se.name = "2020年4s店售价"
print(se)
print("查看宝马的价格(直接根据索引):",se['宝马'])
print("查看宝马的价格(根据下标查看):",se[0])
#根据索引取切片基本上不用
print("查看从宝马到凯迪拉克的价格(直接根据索引)根据索引时,左闭右闭:\n",se['宝马':'凯迪拉克'])
print("查看从宝马到凯迪拉克的价格(直接根据下标)根据下标时,左闭右开:\n",se[0:2])

索引的结果如下:
在这里插入图片描述

#当series等长时,元素根据索引一一计算
se1 = Series([-1,-2,3,4])
se2 = Series([2,3,4,5])
se1+se2
se1-se2
se1*se2
se1/se2
se1/10
np.sqrt(se1)
np.abs(se1)

计算结果如下:
在这里插入图片描述

#Series自动对齐
#当series不等长时,索引相同的一一计算,索引不同的为NaN值,运算存在容错性,如果是array就会报错
se1 = Series([1,2,3])
se2 = Series([2,3,4,5])
se1+se2
#证明我们上面的结论,也是series是根据索引来计算的。
#实验:两个series,元素个数相同,但是索引不同
se1 = Series([1,2,3,4],index=['a','b','c','d'])
se2 = Series([2,3,4,5],index=['e','a','d','q'])
print(se1)
print(se2)
se1+se2
#证明完毕,结论正确

输出结果如图:
在这里插入图片描述
6.缺失值的检测与替换

#缺失值检测
se = Series([1,2,3,np.NaN])
#isnull判断是否有缺失值
print("isnull的结果:\n",se.isnull())
#notnull判断是否无缺失值
print("notnull的结果:\n",se.notnull())

#缺失值的替换
print("se缺失值替换前:\n",se)
se[se.isnull()] = 0
print("se缺失值替换后:\n",se)

结果如下:
在这里插入图片描述

pandas中的DataFrame的建立

1.多种方式建立DataFrame后面简称df

#通过二维数组或者列表建立dataframe
arr = np.array([
    [1,2,3],
    [2,3,4]
])
df = DataFrame(arr, index=['a','b'], columns=['q','w','e'])
print("通过数组建立的df:\n",df)
ls = [
    [1,2,3],
    [2,3,4]
]
DataFrame(ls, index=['a','b'], columns=['q','w','e'])
print("通过列表建立的df:\n",df)

#通过字典建立df
dd = {'a':[1,2,3],'b':[2,3,4],"c":[5,6,7]}
df = DataFrame(dd)
print("通过字典建立的df:\n",df)

结果如下
在这里插入图片描述
2.df的索引 使用df[]进行索引时,必须使用索引的名字, 而且只能索引列!!!

dd = {'a':[1,2,3],'b':[2,3,4],"c":[5,6,7]}
df = DataFrame(dd,index=['r','g','b'])
df['a']

结果:在这里插入图片描述
如果想进行行索引时,需通过loc[‘行索引名’],或者使用**iloc[int,int]**进行索引,ix方法已被版本弃用

print("使用索引名时:\n",df.loc['r'])
print("使用数值直接索引时(iloc):\n",df.iloc[0,:])
type(df.loc['r'])

结果如下:
在这里插入图片描述
df实例

df = pd.DataFrame({
    'a':[1,2,3,4,5,6],
    'b':[2,3,4,5,6,7],
    'c':[3,4,5,6,7,8]
},index=['q','w','e','r','t','y'])
#提示:方式是:[] loc  iloc    转化为array之后再取
#1、索引 a这一列  w这一行  尝试使用更多不同的方法,可以多个函数,可以转化为array
a = df['a'] #索引列,最简单好用的方法
w = df.loc['w'] #索引行,如果有行标签,最简单的方法
w = df.iloc[1,:] #索引行,如果没有行标签,最简单的方法,正常来说,没有行标签的数据极大多数
# a = df.iloc[:,0]
#2、索引所有的  4 5   尝试使用更多不同的方法,可以多个函数,可以转化为array
#               5 6
df.iloc[2:4,1:] #同时索引行和列最常用的方式,没有行标签的情况下
df.loc['e':'r','b':'c'] ##同时索引行和列,有行标签的情况下
#3、把表中所有的2都换成0
df[df==2] = 0
#4、说说自己觉得哪个索引方式最好用

#正常数据表情况下
#单独索引列用 df['列名']
#有行有列,或者索引单行情况下,df.iloc[]

pandas的基本功能(这里不一一列举)

1.pandas的文件读取

read_path = "./student.txt"
df= pd.read_csv(read_path,header=None,sep='~',names=['uid','name','score','txt'])
print(df)

#1/特性1 默认第一行数据是列名,通过header这个参数控制,设置header=None可以取消第一行变列名
#2/特性2 要根据文件的分隔符来读取文件,分隔符通过sep这个参数来控制,默认是逗号
#3/在处理和写入文件的时候,最不可能重复的分隔符一般是 \t
#4/特性3 可以通过names参数对文件的列名进行赋值
read_path = "./student.txt"该文件如下:
在这里插入图片描述
2.pandas文件写入

write_path = "./student_write.txt"
#pandas的文件写入
#做个处理,删除 备注这一列,并新加一列得分的平均值
#删除一列或者一行 最常用的函数是  drop([要扔的列名],axis=0按行,axis=1按列, inplace是否直接替换原始数据)
df1 = df.drop(['txt'],axis=1)
#新加一列
df1['avg'] = df1['score'].mean()
#写入文本文件
df1.to_csv(write_path,index=None,header=None,sep="\t")
#to_csv特性
#1、默认写入的时候会把行索引也写进去,不影响pandas读取,但是会影响其他读取,一般不要
#因此,通过控制index参数来取消写入
#2、跟read-csv一样,也有header和sep参数,来控制是否写入列索引和分隔符

pandas里缺失值处理

先创建一个df

df = pd.DataFrame({
    'a':[np.NaN,2,3],
    'b':[1,np.NaN,2],
    'c':[np.NaN,2,3]
})

对缺失值处理,为了方便阅读,全部放在代码里面,外面不写过多注释

#dropna 对缺失值进行行删除或者列删除操作
#1、how参数控制删除缺失值的方法 all:当一列或者一行全都是缺失值的时候删除  any
#2、axis通过行删还是列删, 默认axis=0时,删除行, axis=1时删除列
df = df.dropna(how='all',axis=0) #特征工程中用的非常多
#axis=0用的多 默认
#how='any'用的多,懒人模式,后面不需要做缺失值填充
#how='all'认真去做的话,后面需要做缺失值的填充

#fillna 缺失值的填充
#1、直接选择填充一个具体的值
df.fillna(0)
#2、向前填充,向后填充
df.fillna(method="ffill")
df.fillna(method="bfill")

pandas里的常见统计方法

1.统计方法

df = DataFrame({
    'a':[1,2,3,4,5.0],
    'b':[2,3,4,5,6.2],
    'c':[3,4,5,6,7]
})
#基础的信息展示
print(df.info())
#基础的统计展示
print(df.describe())
print("每列的最大值:\n",df.max())
print("每列最大值的索引位(pandas的方式):\n",df.idxmax(axis=0))
print("每列最大值的索引位(numpy的方式):\n",df.values.argmax(axis=0))

结果如下:
在这里插入图片描述

在这里插入图片描述
2.相关系数和协方差

#相关系数全称 皮尔逊相关系数:表示两个数据之间的线性相关程度
#计算协方差
#直接在整个df上计算,得到协方差矩阵
print(df.cov())
#单独拿出来两列做协方差
df['a'].cov(df['b'])

结果如下:
在这里插入图片描述
相关系数的极端

#直接在df上计算得出相关系数矩阵
df.corr()
#单独拿出来做
df['a'].corr(df['b'])
# 结果 = 0.99926117463131425

pandas 属性介绍


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值