pandas入门

本文介绍了Pandas的核心数据结构Series和DataFrame,包括它们的区别和联系,以及如何进行基本操作,如转换、查看数据、统计摘要、筛选、去缺失值和重复值。此外,文章还涉及了时间序列、Resample函数的应用,以及数据的读取和存储方法,如CSV和Excel格式。
摘要由CSDN通过智能技术生成

一、认识Pandas数据分析库

1.1 数据结构:Series,DataFrame

区别:

  • series,只是一个一维数据结构,它由index和value组成
  • dataframe,是一个二维结构,除了拥有index和value外,还拥有column

联系:

dataframe 由多个series组成,无论是行还是列,单独拆分出来都是一个series

# 创建一张二维表格
data = {'apples': [3, 2, 0, 1], 'oranges': [0, 3, 7, 2]}
data = pd.DataFrame(data)
print(data)

# series调序
app = data['apples']
app = pd.Series(app,index=[3,2,1,0])
print(app)

# 重置索引 参数drop删除索引
app = app.reset_index(drop=True)
print(app)

1.2 Numpy和Pandas

两者互相转换

# series转换为DataFrame  columns添加列名
data2 = np.arange(15).reshape(3,5)
data2 = pd.DataFrame(data2,columns=['a','b','c','d','e'])
print(data2)
# series转换为DataFrame  columns添加列名
data2 = np.arange(15).reshape(3,5)
data2 = pd.DataFrame(data2,columns=['a','b','c','d','e'])
print(data2)

# DataFrame转换为Series
data3 = pd.DataFrame(data2,columns=['a','b','c','d','e'])
print(data3.values)

二、DataFrame的基本操作

# 创建一个时间列表 30行数据 按月
dates = pd.date_range('20220101', periods=30, freq='M')

# np.random生成0-1数据  30行3列  列名A,B,C  索引是dates
data = pd.DataFrame(np.random.rand(30, 3), columns=list('ABC'), index=dates)

2.1 查看头部、尾部数据

data.head()

# 查看前三行
data.head(3)

# 查看尾部数据
data.tail()

# 查看尾部5行
data.tail(5)

2.2 查看索引列名

# 索引
data.index

#列名
data.columns

2.3 查看数值

# 查看数值
data.values

data.to_numpy

2.4  查看统计摘要

# 查看统计摘要
data.describe()

2.5 查看列数据

# 查看列数据
data['A']

# 查看两列数据
data[['A','B']]

2.6 查看行数据

# 查看前10行数据
data.iloc[0:10]

# 筛选索引
data.loc['20220101':'20221001']

# 只看 20220101 - 20221001 A,B列 行和列同时进行筛选
data.loc['20220101':'20221001','A':'B']

2.7 按值筛选


# 先将结果保留2位小数
data = round(data,2)
# 按值筛选 可写> < =
data[data['A']==0.95]
# 只看A列
data[data['A']==0.95]['A']

2.8 去缺失值

# 去缺失值
data.dropna()

2.9 去重复值

# 去重复值
data.drop_duplicates()

2.10 转置、排序

# 转置
data.T

# 按值排序 逆序
data.sort_values(by='A',ascending=False)

# 按index排序 逆序
data.sort_index(ascending=False)

三、时间序列和Resample函数

3.1 时间序列

  • index横坐标为日期数据
  • 数据导入:pandas datareader

3.2 Resample函数

计数、均值、方差、累加、累乘 

周期转换

数据验证 :for 循环  vs 内置函数

import pandas_datareader as pdr

# 获取数据 近10年债券

date_d = pdr.get_data_fred('GS10')
print(date_d)

# 计算:均值,方差,最大值,最小值,计数等常见的描述性指标
# 计算均值 按月
print(date_d.resample(rule='M').mean())

count = date_d.resample(rule='Y').count()
print(count)

# 累加
sum1 = date_d.resample(rule='Y').sum()
print(sum1)

# 计算标准差  获取最大值
data = date_d.resample(rule='Y').std().max()

# 计算累乘
data1 = date_d.resample(rule='Y').prod()

# 获取数据 近5年债券
date_d5 = pdr.get_data_fred('GS5')

# 合并5年和10年数据   值和index的精确匹配
date_d['GS5'] = date_d5
print(date_d)

# 增加一列mean  计算5年和10年平均数
date_d['mean'] = (date_d['GS10'] + date_d5['GS5']) / 2
print(date_d)

# 周期转换  每一年最后的的数据

date_d.resample(rule='Y').last()

三、plot快速可视化

# 生成1000数值 0-1小数
df = np.random.randn(1000)
df = pd.DataFrame(df,index=pd.date_range('20200101',periods=1000))
# 绘制图形
df.plot()

四、io读取与存储:csv、excel

4.1 读取和存储

# 数据存储
data = pd.DataFrame(np.random.randn(1000,3),columns=['a','b','c'],index=pd.date_range('20200101',periods=1000))
# 存储前对索引命名
data.index.names = ['data']
data.to_csv('txt.csv')
# 对已有文件进行数据追加
data2 = data.tail()
data2.to_csv('txt.csv',mode='a',header=False) # append - 追加操作 header=False不写入表头
# 读取
df = pd.read_csv('txt.csv')
print(df)

# excel读取 新建工作表名称
data.to_excel('txt.xlsx',sheet_name='b')  # 没有mode参数
# 一次写入多个sheet ,追加新的sheet
with pd.ExcelWriter('writer.xlsx') as writer:
    data.to_excel(writer,sheet_name='a')
    data.to_excel(writer,sheet_name='b')
    data.to_excel(writer,sheet_name='c')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值