【Pandas】Pandas基础知识笔记

1.简介

Pandas是基于numpy写的,让numpy用起来更简单

如果类比列表和字典

numpy就是列表,pandas就是字典

pandas可以给不同的列和行,重新命名

2.学习

2.1 基本介绍

Series

序列

在这里插入图片描述

Series的表示为,索引在左边,值在右边

DataFrame

表格型的数据结构,包括:行索引、列索引

可以指定索引的名称,如果不指定默认为0~N-1

DataFrame可以看成一列列的Series,可以通过 df[‘xxx’] 来访问某一个Series

创建DataFrame时,可以选择指定 index和columns
在这里插入图片描述

也可以利用字典来生成DataFrame,字典中的键表示Series的名字
在这里插入图片描述

字典方式生成DataFrame
在这里插入图片描述

DataFrame的属性和方法

df.dtype #查看每一个Series的类型
df.index 和 df.columns  #查看行列的名字
df.values #查看所有的值,不含索引
df.describe() #对元素进行描述,技术,均值等等
df.T #翻转
df.head(num) #前num个数据,默认为5

df.sort_index(axis,ascending) #对索引进行排序
#axis:1代表列索引,0行索引
#ascending:True升序,False倒序
df.sort_values(by='xx') #对值进行排序
#by:对哪一个索引的值排序

2.2 用Pandas选择数据

1.基本:对列
df['xx']
df.xx     #选取某一列,这两个效果相同。xx表示列名

2.切片:对行
df[0:3]
df['xx1':'xx3']

3.标签筛选
df.loc[行筛选条件,列筛选条件]
例如:df.loc['r1':'r3',['c1','c2','c3']]

4.索引数字筛选
df.iloc[行筛选条件,列筛选条件] #区别就是,不适用名称,而是索引的顺序数
例如:df.iloc[[1,3,5],1:3]

5.混合筛选
df.ix[,] #索引数字和标签可以混着用

6.布尔筛选
df[df.A > 8]

2.3 用Pandas设置值

过程就是:1)选择数据。 2)赋值。
1.基本
df.iloc[2,2] = 666
df.loc['r2','c2'] = 666
df.B[df.A > 8] = 666

2.批处理
df['c3'] = np.nan

df['new col'] = pd.Serires([datas...],index)

2.4 用Pandas处理丢失数据

df.dropna(axis,how='any|all') #丢掉含空值的行或列
#how:any只要行或列内有一个NaN就丢弃,all只有全部为NaN才会丢弃

df.fillna(value='xxx') #用数值填充NaN
df.isnull() #判断每个值是否为空
np.any(df.isnull()) == True #判断整个数据中是否有空

2.5 用Pandas导入导出数据

pandas可以读写的格式很多:csv、excel、json、html、pickle

官方说明:https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html

data = pd.read_csv("xx.csv")
data.to_csv("xx.csv")

2.6 Pandas的concat合并操作

df1 df2 df3

1.concat
res = pd.concat([df1,df2,df3],axis,ignore_index,join='inner|outer',join_axes=[df1.index])
#axis: 0竖向,1横向
#ignore_index:默认原索引不变。为True时,忽略原索引,将三个df的索引统一
#join:上下合并,对于列名不一样的情况。比如:abcd和bcde。默认outer,将不重叠的部分设为NaN。inner:把相同的部分保留,其他列裁剪掉
#join_axes:左右合并,对于行名不一样的情况。选择最终的行索引按照哪一个df,不重叠的部分设为NaN。默认和上面join中的outer效果类似

2.append
res = df1.append(df2,ignore_index) #默认向下追加
res = df1.append([df2,df3],ignore_index)

s = pd.Series([1,2,3,4],index=['a','b','c','d'])
res = df1.append(s,ignore_index)

2.7 Pandas的merge合并操作

更加复杂的合并

1.merge:基于列名进行合并
res = pd.merge(df1,df2,on='xxx')
#on:基于哪一个列进行合并

#基于两个key
res = pd.merge(df1,df2,on=['key1','key2'],how='inner|outer|left|right')
#how:合并时默认inner,只合并on相同的部分,不同的直接剔除。类似于sql中的左右外内连接

res = pd.merge(df1,df2,indicator=True|'indicator_name')
#indicator:显示每一行合并的方式

#通过index进行合并
pd.merge(df1,df2,left_index=True,right_index=True,how='outer|inner')
#left_index,right_index默认为空,为True时表示合并考虑某个index
#how用法和上面相似

#overlapping问题(属性名重复,但意义不一样)
pd.merge(df1,df2,on,suffixes=['_x1','_x2'],how)
#suffixes可以区分出相同的属性名

2.8 plot出图

1.Series
data = pd.Series(......)
data.plot()  #plt中plt.plot(x,y)

2.DataFrame
同上

3.散点图
data.plot.scatter(x='xx',y='xx')
#xy的内容是df的列名

ax = data.plot.scatter(x='A',y='B',color='xx',label='Class1')
data.plot.scatter(x='A',y='C',color='xx',label='Class2',ax=ax)

4.其他
bar hist box kde area scatter hexbin 

Pandas学习视频和本文章图片来源:https://mofanpy.com/tutorials/data-manipulation/np-pd/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KyrieLiu52

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值