1.  初识Pandas

Pandas是Python语言的一个扩展程序库,主要用于数据分析。

1.1 特点与功能

Pandas可以从各种文件格式如CSV、JSON、SQL、Microsoft Excel等导入数据。

还提供了各种统计函数和方法,用于描述性统计、聚合操作、分组运算、透视表等数据分析任务。 

1.2 主要数据结构 

Series:一维数组,与Numpy中的一维array类似,可以保存不同种数据类型,如字符串、boolean值、数字等。Series由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。 

DataFrame:二维的表格型数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,可以被看做由Series组成的字典(共同用一个索引)。

2.DataFrame的基本操作

创建一个从2021年1月开始的30个月的日期范围的pandas DatetimeIndex

import pandas as pd
import numpy as np
dates = pd.date_range("20210101",periods=30,freq="M")
date = pd.DataFrame(np.random.rand(30,3),columns=list('abc'),index=dates)

dates: periods = 30表示生成30个日期

date : 创建随机数,数据格式为30行 3列的正态分布数据;3列的列名分别为abc;索引值为dates中的日期

函数及应用:

#头尾数据,默认5行
print(date.head())
print(date.tail())
print(date.head(3))
#索引值/列名
print(date.index)
print(date.columns)
print(date.values)
#查看统计数据
print(date.describe())
#数据查询
#列数据
print(date['a'])
print(date[['a','b']])
#行数据
#基于引用对行数据进行切片
print(date[0:5])
#基于pandas中切片属性数据进行切片
print(date.iloc[0:5])
#基于索引值(字符串)对数据进行切片.
print(date.loc['20210101':'20220101'])
#行列同时切片
print(date.loc['20210101':'20210701',['a','b']])
print(date.loc['20210101':'20210701','a':'b'])
#数据筛选的四舍五入
date = round(date,2)
print(date)
#数据筛选
print(date[date['a']==0.95])
print(date[date['a']==0.95]['a'])
print(date[date['a']>0.1])
print(date[date>0.1])
data = date[date>0.1]
print(data)
#去除缺失
print(date.dropna())
#去除重复
print(data.drop_duplicates())
#其他:转置、排序
print(date.T)
#根据值进行排序
by='a'#对应列
#默认升序,False是降序
print(date.sort_values(by='a',ascending=False))
print(date.sort_index(ascending=False))

3. 时间序列和resample函数

pandas_datareader读取米国政府近五年的10年期债券 

import pandas_datareader as pdr
data = pdr.get_data_fred('GS10')

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

使用resample函数完成常见操作

resample函数只能操作日期序列值

print("----均值·月为单位----")
print(data.resample(rule='Y').mean())
print("----计数·年为单位----")
print(data.resample(rule='Y').count())
print("----求和·年为单位----")
print(data.resample(rule='Y').sum())
print("----求标准差·年为单位----")
print(data.resample(rule='Y').std())
print("----求最大值·年为单位----")
print(data.resample(rule='Y').std().max())
print("----求累乘·年为单位----")
print(data.resample(rule='Y').prod())

3.2 数据合并

数据合并,将数据data1合并至data中 

data1 = pdr.get_data_fred('GS5')
data['GS5'] = data1

合并后的数据处理:

#求两列的均值
data['mean'] = (data['GS10']+data['GS5'])/2
#获得每年最后一个月的数据
print(data.resample(rule='Y').last())

4.plot可视化

生成一个包含1000个随机数的DataFrame,

这些随机数代表从2021年1月1日开始的连续1000天的数据,并绘制这个数据的线图。 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
 
df = np.random.randn(1000)
df = pd.DataFrame(df,index=pd.date_range('20210101',periods=1000))
print(df)
df.plot()
plt.show()

5. io读取与存储

5.1 存为CSV文件

将DataFrame保存为一个名为'txt.csv'的CSV文件。

从'txt.csv'文件中读取数据,并将其存储在一个新的DataFrame中(命名为data1)。

import pandas as pd
import numpy as np
 
data = pd.DataFrame(np.random.randn(1000,3),
                    columns = ['a','b','c'],
                    index = pd.date_range('20210101',periods = 1000))
data.index.names = ['date']
data.to_csv('txt.csv')
data1 = pd.read_csv('txt.csv')
print(data1)

5.2 存为excel

将名为data的DataFrame数据导出到一个名为excel.xlsx的Excel文件中,

并在该文件中创建一个名为'a'的工作表来存储这些数据。

data.to_excel('excel.xlsx',sheet_name='a')

使用 to_excel 方法将一个名为 data 的 Pandas DataFrame导出到一个名为 excel.xlsx 的 Excel 文件中,并在该文件中创建了一个名为 'a' 的工作表。

随后,您又使用了 pd.ExcelWriter 上下文管理器来向另一个名为 writerExcel.xlsx 的 Excel 文件中追加数据。

data.to_excel('excel.xlsx',sheet_name='a')
with pd.ExcelWriter('writerExcel.xlsx',mode='a',engine='openpyxl') as writer:
    data.to_excel(writer,sheet_name='d')

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐