Pandas操作02

CSV

打开csv类型的文件

pandas.read_csv(filepath_or_buffer, sep =',' )
filepath_or_buffer:文件路径
usecols:指定读取的列名,列表形式

示例:

import pandas as pd
data = pd.read_csv("./data/stock_day.csv", usecols=['open', 'close'])

保存csv格式文件

DataFrame.to_csv(path_or_buf=None, sep=', ’, columns=None, header=True, index=True, mode='w', encoding=None)
参数:
path_or_buf :文件路径
sep :分隔符,默认用","隔开
columns :选择需要的列索引
header :boolean or list of string, default True,是否写进列索引值
index:是否写进行索引
mode:'w':重写, 'a' 追加

示例:

# 选取10行数据保存,便于观察数据
data[:10].to_csv("./test.csv", columns=['open'])
# index:存储不会将索引值变成一列数据
data[:10].to_csv("./data/test.csv", columns=['open'], index=False)

HDF5(推荐使用)

HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的
使用压缩可以提磁盘利用率,节省空间
HDF5还是跨平台的,可以轻松迁移到hadoop 上面

读取HDF5文件

pandas.read_hdf(path_or_buf,key =None,** kwargs)
参数:
path_or_buffer:文件路径
key:读取的键
return:Theselected object

示例:

day_eps_ttm = pd.read_hdf("./data/stock_data/day/day_eps_ttm.h5")

如果显示:
在这里插入图片描述
则需要安装:

pip install tables

存储文件:

DataFrame.to_hdf(path_or_buf, key, *\kwargs*)

示例:

day_eps_ttm.to_hdf("./data/test.h5", key="day_eps_ttm")

再次读取的时候, 需要指定键的名字

new_eps = pd.read_hdf("./data/test.h5", key="day_eps_ttm")

JSON

读取json文件

pandas.read_json(path_or_buf=None, orient=None, typ='frame', lines=False)
orient--指定读取数据的字典格式
records—一行一个记录{列名:值,}
lines—是否分行--一个记录一行

示例:

import pandas as pd
json_data = pd.read_json('./Sarcasm_Headlines_Dataset.json',orient="records",lines=True)
json_data

存为json

DataFrame.to_json(path_or_buf=None, orient=None, lines=False)

将Pandas 对象存储为json格式:
	path_or_buf=None:文件地址
	orient:存储的json形式,{‘split’,’records’,’index’,’columns’,’values’}
	lines:一个对象存储为一行
to_json--存储文件—注意:lines=True

查找数据

直接使用行列索引查找,但必须是先列后行

data["open"]["2015-03-04"] 

根据行列索引找到对应的值

data.loc["2015-03-02","open"]

根据行索引下标提取数据

data.iloc[0:4]

赋值,将某一列全赋值为1

data["列名"]=1

排序

#按照字段"high"进行升序排序,只显示前五(如果是降序,则ascending=False)
data.sort_values(by="open",ascending=True).head() 
#对多个字段进行排序,以字段先后顺序为准
data.sort_values(["low","open"]).head() 
#按索引进行排序(行索引)
data.sort_index()  
#series排序时,只有一列,不需要参数
data["p_change"].sort_values(ascending=True).head() 
#选择p_change那一列,按照行索引进行排序 
data['p_change'].sort_index().head()  

筛选

#逻辑判断的结果作为筛选依据(从某一列大于23的数据中筛选出前五)
data[data["open"]>23].head()
#多个逻辑判断&  
#从open列中找出(23,24)之间的数据并筛选出前五个
data[data["open"]>23 & (data["open"]<24)].head() 
#从open列中找出(23,24)之间的数据并筛选出前五个
data.query("open>23 &open<24").head()
## 可以指定值进行一个判断,从而进行筛选操作
#筛选某一列含有23.53, 23.85的那一行
data[data["open"].isin([23.53, 23.85])]

综合分析,可以直接得到平均值,标准差,最大值,最小值等

data.describe()

在这里插入图片描述
使用统计函数:0 代表列求结果, 1 代表行求统计结果

#求每列的最大值
data.max(0)
#求每行的最大值
data.max(1)
#方差
data.var(0)
#标准差
data.std(0)
#中位数
data.median(0)
# 求出最大值的位置(每列最大值对应的行索引)
data.idxmax(axis=0)

累计函数

cumsum()  累计和
cumprod() 累计积
cummax()   累计最大值
cummin()    累计最小值

累计求和

#按行索引进行排序
data.sort_index()
#筛选p_change那一列
stock_rise = data['p_change']
import matplotlib.pyplot as plt
# plot显示图形
stock_rise.cumsum().plot()  #累计求和
# 需要调用show,才能显示出结果
plt.show()

在这里插入图片描述
求累计最大值
在这里插入图片描述
累计最小值
在这里插入图片描述
累计求积
在这里插入图片描述
自定义函数
在这里插入图片描述

pandas画图

pandas里面有一个plot(kind=“line”)方法,可以用于画图,kind默认等于line,即折线图

Series.plot()   
DataFrame.plot()
"""参数kind:
	'line' : 折线图
	'hist' : histogram  柱状图
	'pie' : pie plot    饼图
	'scatter : scatter plot   散点图"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值