Pandas学习总结

Pandas

基本数据结构
在这里插入图片描述


创建序列

s=pd.Series([1,3,6,np.nan,44,1])#创建pandas的序列
print(s)
dates=pd.date_range('20210101',periods=6)#日期的序列
print(dates)

运行结果:
在这里插入图片描述


创建DataFrame

在所有操作之前当然要先import必要的pandas库,因为pandas常与numpy一起配合使用,所以也一起import吧。

import pandas as pd
import numpy as np
  1. 可以直接使用pandas的DataFrame函数创建,比如接下来我们随机创建一个6*4的DataFrame。
df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['a','b','c','d'])#产生二维表
print(df)

运行结果:
在这里插入图片描述

  1. 也可以用字典创建。
dic1={'name':['小明','小红','狗蛋','铁柱'],'age':[17,20,5,40],'gender':['男','女','女','男']}
df3=pd.DataFrame(dic1)
print(df3)

运行结果:
在这里插入图片描述

  1. 查看数据类型
print(df.dtypes)

运行结果:
在这里插入图片描述

  1. 查看行、列标签
print(df.index)#行标签
print(df.columns)#列标签

运行结果:
在这里插入图片描述

  1. 查看二维表的数据值,返回数组
print(df.values)

运行结果:
在这里插入图片描述

  1. 对数据根据列进行描述性统计
print(df.describe())

运行结果:
在这里插入图片描述

  1. 将行列互换(转置)
print(df.transpose())
print(df.T)#这样也可以

运行结果:
在这里插入图片描述

  1. 排序
print(df.sort_index(axis=0,ascending=False))#按列倒叙
print(df.sort_index(axis=1,ascending=False))#按行倒叙
print(df.sort_values(by='c'))#axis=0,,ascending=True,按第c列升序

运行结果:

abcd
2021-01-0620212223
2021-01-0516171819
2021-01-0412131415
2021-01-03891011
2021-01-024567
2021-01-010123
dcba
2021-01-013210
2021-01-027654
2021-01-03111098
2021-01-0415141312
2021-01-0519181716
2021-01-0623222120
abcd
2021-01-010123
2021-01-024567
2021-01-03891011
2021-01-0412131415
2021-01-0516171819
2021-01-0620212223

筛选、修改数据

  1. 可以按列,按行选取
print(df['a'])#或者print(df.a)
print(df[0:3])#选取第0行到第2行
print(df['20210103':'20210105'])

运行结果:
在这里插入图片描述

  1. 使用loc或者iloc查看数据值,区别是loc是根据标签(行名),iloc是根据数字索引(也就是行号)。
print(df.loc['20210101'])
print(df.loc[:,['a','b']])#筛选a,b两列
print(df.iloc[3:5,0:2])#找第4行到第5行,第1列到第2列
print(df[df['a']>8])#选取第a列大于8的行

运行结果:
在这里插入图片描述

  1. 修改操作
df.iloc[2,2]=66
df.loc['20210101','b']=22
df['a'][df['a']>8]=1#或者df.a[df.a>8]=1
print(df)
df['f']=pd.Series([1,2,3,4,5,6], index=df.index)
print(df)

运行结果:
在这里插入图片描述

  1. 对数据处理时,需要判空,然后进行去除或者填充,代码如下:
    在这里插入图片描述

文件的读取保存

  1. Pandas常用的有以下三种文件:
  • csv文件
  • txt文件
  • xls/xlsx文件
  1. 读取文件时的注意事项:
  • 文件路径是否正确,相对路径 ./
  • 编码方式
  • 分隔符
  • 列名
#读取csv文件
df = pd.read_csv('student.csv')
#读取txt文件,直接读取可能会出现数据都挤在一列上
df_txt = pd.read_table('student.txt')
#读取xls/xlsx文件
df_excel = pd.read_excel('student.xlsx')
df.to_pickle('student.pickle')#保存文件

数据合并

  1. pd.concat() 函数可以沿着指定的轴将多个 DataFrame 或者 Series 拼接到一起。
df11=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df22=pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df33=pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
res=pd.concat([df11,df22,df33],axis=0,ignore_index=True)#ignore_index可以忽略标签
print(res)#合并矩阵

运行结果:
在这里插入图片描述

  1. pd.merge() 函数只能实现两个表的拼接。
df1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df2=pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])
res1=pd.concat([df1,df2],join='inner',ignore_index=True)
print(res1)#交集
res2=pd.concat([df1,df2],join='outer',ignore_index=True,sort=True)#这里sort要改为True
print(res2)#并集

运行结果:
在这里插入图片描述

left=pd.DataFrame({'key':['k0','k1','k2','k3'],
                   'a':['a0','a1','a2','a3'],
                   'b':['b0','b1','b2','b3']})
right=pd.DataFrame({'key':['k0','k1','k2','k3'],
                    'c':['c0','c1','c2','c3'],
                    'd':['d0','d1','d2','d3']})
print(left)
print(right)
reslr=pd.merge(left,right,on='key')
print(reslr)

运行结果:
在这里插入图片描述


Pandas plot 画图

首先要import matplotlib.pyplot as plt

  • 绘制图
datad=pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=['a','b','c','d'])
datad=datad.cumsum()
print(datad.head())#默认5行
datad.plot()
plt.show()

运行结果:
在这里插入图片描述

  • 绘制散点图
ax=datad.plot.scatter(x='a',y='b',color='DarkBlue',label='Class1')
datad.plot.scatter(x='a',y='c',color='DarkGreen',label='Class2',ax=ax)
plt.show()

运行结果:
在这里插入图片描述

其他文章:

Numpy学习总结

Matplotlib学习总结

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值