python数据处理

本文记录python数据处理中常见的操作,主要涉及pandas、matplotlib、scipy、fitter库。
(持续更新~)

import pandas as pd
import matplotlib.pyplot as plt
import sys

1.pandas 数据处理

1.1 数据读取或存储

1.1.1 csv格式文件
(1)读取
注意,只要数据的内容是以某个字符分隔,都可以使用。
示例:

data = pd.read_csv( filepath_or_buffer=of, 
					index_col=None, 
					name=['a','b','c'],
					sep=',',
					dtype={'a':int, 'b':int, 'c':float} )

# filepath_or_buffer:指定待读取文件路径
# sep:指定分隔符,默认为','
# name:指定列名称,list类型
# index_col:指定行列名称所在位置,None就是没有
# dtype:指定每一列的数据类型,dict类型

通常情况下,仅需指定filepath_or_bufferindex_col即可。数据类型自动推算。
(2)写入

data.to_csv(sf)
# sf:指定输出文件名称

1.1.2 xlsx格式文件
(1)读取

data = pd.read_excel(of, index_col=0)
# of:是待读取文件的路径
# index_col:行列名称所在位置,0表示行列名称在数据的第一行和第一列

(2)写入

data.to_excel(sf)
# sf:指定输出文件名称

1.2 表格处理

(1) 前后两行做差diff

data.diff()
# 默认为行做差

(2)列插入 insert
注意:需要保证数据长度严格一致,才能插入.

data.insert(loc=len(data.columns),column='delay_ms', value=delay_ms)
loc:插入的位置,这里是插在最右侧
column:指定插入的列名
value:指定插入的元素

(3)行插入.loc方法
如果需要插入行,直接通过索引实现

df.loc[‘new_idx’] = []
# .loc方法可以扩大可以扩大DataFrame;而.iloc不可以

(4)删除drop

data.drop([0], inplace=True) # 本地修改
# inplace:本地修改,还是返回一个copy。True为本地修改。
# index= 行标签,指定后删除该行标签对应的数据
# colums= 列标签,指定后删除该列表前对应的数据

(5) 拼接
concat: 可以使用函数 .concat 按列和按行连接多个表
merge: 对于类似数据库的表合并/连接,请使用函数.merge

1.3 常见使用

(0)创建DataFrame

step = [1,5,10,15,20,25,30,35]
a= pd.DataFrame([],columns=step)
# 绘图
a.plot() # 注意:线形是style

(1)常见统计量

df.mean()
df.std()
df.describe()

(2)常见方法/索引

df.index # 求索引
df.columns # 丢列名称
# 修改上述值,仅需进行操作: df.index= [a,b,c,d] (需保持维度一致,防止出错)

(3)格式转换

# Pandas转为list
df.values.tolist()
df.loc[:,'a'].values.tolist()
# 转换后,是一个两层的list,每个元素为一个list
需要reshape,(reshape同样是两层,这是在索引第一项即可)
c.to_numpy().reshape(1,10)[0]

2. scipy

(先占个地方,以后再写)

3.文件检索/匹配/名称

from glob2 import glob
import re
import os
file = sys.argv[1] # 命令行读入file
os.path.dirname(file) # 获取basename
path = os.path.dirname(file)
name = re.sub(r".xlsx", "", os.path.basename(file))

paths = glob(r"test*.txt") # 搜索指定格式下的文件

4.输入/输出

(1)命令行输入输入

import sys
sys.argv[idx]

(2)格式化输出

print("t0=0,t1={},t2={}".format(t1,t2))

5.绘图

(0)创建画布/调节/图像存储

fig, ax = plt.subplots(figsize=(5, 4)) # 创建画布,并设置画布大小
ax.legend(frameon=False) # 不显示图例的周边的框
plt.subplots_adjust(left=0.2, top=0.9, bottom=0.1, right=0.95)# 调整画布的边距
plt.savefig("fig.png"), dpi=400) # 存储画布
plt.show() # 显示画布
plt.close() # 关闭画布

(1)字体设置(全局设置)

fontSize = 10.5
plt.rcParams['font.sans-serif'] = ['STSong']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.rcParams['font.size'] = fontSize  # 坐标轴字体大小
plt.rc('font', family='Times New Roman') # 坐标轴字体
ax.ticklabel_format(style='sci',axis='y') # 使用科学计数法

(2)label中的上下标

$_{}$ 下标
$^{}$ 上标
{}里面填写要设置的格式内容
非斜体设置$\regularmath{}$
如果两个要同时设置
	$\regularmath{_{xxx}}$
xxx为要设置的内容(非斜体的字体与下面设置的字体形式一致)
注意,写入时要加””

(3)坐标轴/注释设置

ax.set_xlabel("time(h)") # 设置x坐标轴名称
ax.set_ylabel("error(ms)") # 设置y坐标轴名称
ax.axis([0,4,None,None]) # 设置显示范围[xmin,xmax,ymin,ymax],None表示无限制
ax.legend(loc='upper right',frameon=False) # 图例设置,loc设置图例显示的位置,frameon=False表示不显示图例的边框
ax.set_title(name+" error") # 设置图的标题,一般都不用
plt.text(xpos,ypos,"content") # 设置标注文字,在(xpos,ypos)处设置文字“content”

(4)嵌入式子图绘制

# 创建子坐标轴
axins = inset_axes(ax,width="40%",height="50%",
                   bbox_to_anchor=(0.12,.2,1,1),
                   bbox_transform=ax.transAxes,
                   loc=3)# 宽高相对于父ax的比例
# ax就是父图,axins就是创建的子图
# width,height:宽高相对于父ax的比例
# loc=3 -- lower left:移动相对左下角进行
# bbox_to_anchor:位置调整,是相对loc所指定的位置的调整。(左,下,宽,高)(注意,宽高是相对于缩放后调整的。)
# 
# 创建子图与父图的联系示意
mark_inset(ax,axins,loc1=2, loc2=3)
# 标记的loc1和loc2就是引线的位置
# (1,2,3,4) 对应(右上、左上、左下、右下)逆时针方向

(5)plot/scatter

plt.plot(x,y) #绘制折线图
plt.scatter(x,y,marker="*") #绘制散点图,标签为* 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值