数据处理笔记

pandas处理数据

  1. pd.reset_index()
    重置index索引并不删除空行,当DataFrame或Series类型的数据不是连续的索引或索引的输运不对,可以使用reset_index()重置索引。
    DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')
    drop = True 表示不保留原来的索引,即删除原来的索引,只保留新的索引
    inplace=True 表示对原表生效
    示例: df.reset_index(drop=True,inplace=True) #
    相关语法:set_index
  2. pd.dropna() 删除空值,即删除包含nan(空值)
    DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
    参数说明:

    axis default 0指行,1为列
    how {‘any’, ‘all’}, default ‘any’指带缺失值的所有行;’all’指清除全是缺失值的行
    thresh int,保留含有int个非空值的行
    subset 对特定的列进行缺失值删除处理
    inplace 这个很常见,True表示就地更改 示例: df.dropna()

  3. df.rename() 重新命名列名
    rename方法作用: 复制 DataFrame并对其索引index和列标签columns进行赋值。如果希望就地修改某个数据集,传入inplace=True即可
    示例: df.rename(columns={averageName:'average'},inplace=True)
  4. df.mean()
    Pandas中的df.mean()函数默认是等价于df.mean(0),即按轴方向求平均,得到每列数据的平均值。
    示例: df['average'].mean()求某一列的平均值
  5. df.shift(periods=1, freq=None, axis=0) 移动
    periods:类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值是1,1就表示移动一次,注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。
    freq: DateOffset, timedelta, or time rule string,可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。
    示例: df1.shift(periods=1,freq=datetime.timedelta(1))
  6. pd[‘列名’].values 获取值
    取到的是该列对应的函数值
    示例: df['diff_1'].values
  7. df.loc[] 区域选取
    区域选取可以从多个维度(行和列)对数据进行筛选,可以通过df.loc[],df.iloc[],df.ix[]三种方法实现。采用df.loc[],df.iloc[],df.ix[]这三种方法进行数据选取时,方括号内必须有两个参数,第一个参数是对行的筛选条件,第二个参数是对列的筛选条件,两个参数用逗号隔开。 df.loc[],df.iloc[],df.ix[]的区别如下:
    df.loc[]只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭。
    df.iloc[]只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开。
    df.ix[]既可以使用标签索引,也可以使用整数索引。
    示例: df.loc['a', :] df.loc['a':'d', :] df.loc[df['age']>30,:] df.loc[lambda df:df['age'] > 30, :] df.loc[:, 'name'] df.iloc[1, :] df.loc[:,'Day'] = df['TimeStamp']
  8. np.unique()
    unique()是以 数组形式(numpy.ndarray)返回列的所有唯一值
  9. df.columns 修改列名
    示例: df.columns=['Day']
  10. df.groupby()功能:分组
    groupby + agg(聚集函数们): 分组后,对各组应用一些函数,如’sum’,’mean’,’max’,’min’…

示例: df.groupby('Day')[feature].agg(函数名) 如:’sum’、’mean’等
11. pd.merge() 合并Dataframe
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True,suffixes=('_x', '_y'), copy=True, indicator=False, validate=None

left: 拼接的左侧DataFrame对象 right: 拼接的右侧DataFrame对象
on: 要加入的列或索引级别名称。必须在左侧和右侧DataFrame对象中找到。 如果未传递left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。
left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
right_on: 左侧DataFrame中的列或索引级别用作键。
可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。 left_index:
如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。
对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
right_index: 与left_index功能相似。
how: One of ‘left’, ‘right’,’outer’, ‘inner’. 默认inner。inner是取交集,outer取并集。比如left:[‘A’,’B’,’C’];right[”A,’C’,’D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。’outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。
sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。
suffixes: 用于重叠列的字符串后缀元组。 默认为(’x’,’ y’)。
copy:始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。
indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。
_merge是分类类型,并且对于其合并键仅出现在”左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在”右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键,则为left_only。
12. df.rolling() 时间窗口函数
DataFrame.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None) 后接min、max、mean等函数表示对这个窗口的操作
window:表示时间窗的大小,注意有两种形式(int or offset)。如果使用int,则数值表示计算统计量的观测值的数量即 从自己开始向前几个数据。如果是offset类型,表示时间窗的大小。pandas offset相关可以参考这里
min_periods:最少需要有值的观测点的数量,对于int类型,默认与window相等。对于offset类型,默认为1。
center:是否使用window的中间值作为label,默认为false。只能在window是int时使用。
其中的在计算时遇到的nan值做任何计算都为nan值
13. pd.read_csv()
pd.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, prefix=None,nrow=None,encoding =None)
1.filepath_or_buffer:(这是唯一一个必须有的参数,其它都是按需求选用的) 文件所在处的路径
2.sep: 指定分隔符,默认为逗号’,’
3.delimiter : str, default None 定界符,备选分隔符(如果指定该参数,则sep参数失效)
4.header:int or list of ints, default ‘infer’ 指定哪一行作为表头。默认设置为0(即第一行作为表头),如果没有表头的话,要修改参数,设置header=None
5.names: 指定列的名称,用列表表示。一般我们没有表头,即header=None时,这个用来添加列名就很有用啦!
6.index_col: 指定哪一列数据作为行索引,可以是一列,也可以多列。多列的话,会看到一个分层索引
7.prefix: 给列名添加前缀。如prefix=”x”,会出来”x1″、”x2″、”x3″酱纸
8.nrows : int, default None 需要读取的行数(从文件头开始算起)
9.encoding: 乱码的时候用这个就是了,官网文档看看用哪个
14. df.to_csv()
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, c)
参数说明:
path_or_buf=None 字符串或文件目录,文件路径或对象,如果未提供,结果将作为字符串返回。如果传递了一个文件对象,应该用换行= ‘ ‘,禁用通用换行符。 sep=’,’ 输出文件的字段分隔符,默认点 na_rep=”,缺失数据填充
float_format=None,小数点保留几位
columns=None, 要写入的字段
header=True,列名的别名 默认header=0,如果没有表头,设置header=None,表示我没有表头呀!
index=True,写行名(索引)
index_label=None,索引列的列标签。如果没有给出,并且header和index为True,则使用索引名。如果对象使用多索引,应该给出一个序列。如果不打印索引名称的字段。使用index
_ label = Falser以便在R中更容易导入
mode=’w’ 写入模式,默认为w, r : 只能读, 必须存在, 可在任意位置读取 w : 只能写, 可以不存在, 必会擦掉原有内容从头写 a : 只能写, 可以不存在, 必不能修改原有内容, 只能在结尾追加写, 文件指针无效 r+ : 可读可写, 必须存在, 可在任意位置读写, 读与写共用同一个指针 w+ : 可读可写, 可以不存在, 必会擦掉原有内容从头写 a+ : 可读可写, 可以不存在, 必不能修改原有内容, 只能在结尾追加写, 文件指针只对读有效(写操作会将文件指针移动到文件尾)
encoding=None , 表示输出文件中使用的编码的字符串,默认为”utf-8″ 示例: df.to_csv('../data'+'/'+f, index=False, header=False, mode='a+')
15. pd.concat() 拼接函数
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False)
注:行是一定会拼接的,如果列不完全相同,默认补全NaN再进行拼接
参数说明:
objs: series,dataframe或者是panel构成的序列lsit ,注意是list列表
axis: 需要合并链接的轴,0是行,1是列 。 当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并
join:连接的方式 inner,或者outer。如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。
keys: 相接的时候在加上一个层次的key来识别数据源自于哪张表,可以增加key参数 代码示例:

frames = [df1, df2, df3]
result = pd.concat(frames)
result = pd.concat(frames, keys=['x', 'y', 'z'])

pd.merge()函数只能实现两个表的拼接。 append是series和dataframe的方法,使用它就是默认沿着列进行凭借(axis = 0,列对齐)
result = df1.append(df2)
16. pd.read_pickle() 和df.to_pickle()
df.to_pickle 使用DataFrame的to_pickle属性就可以生成pickle文件对数据进行永久储存
pd.read_pickle 使用pandas库的pd.read_pickle读取pickle数据
pickle 文件,以.pkl 为后缀名

对于需要在数据中保持一定程度持久性的应用程序,Pickling非常有用。 您的程序的状态数据可以保存到磁盘,因此您可以稍后继续处理它。
它还可用于通过传输控制协议(TCP)或套接字连接(Socket)发送数据,或将python对象存储在数据库中。
当您使用机器学习算法时,Pickle非常有用,您可以将它们保存在以后能够进行新的预测,而无需重新编写所有内容或重新训练模型。
17. df.iterrows()
iterrows() 是在数据框中的行进行迭代的一个生成器,它返回每行的索引及一个包含行本身的对象。
for循环遍历dataframe,返回有一个元祖类型, 第一个是行的索引,第二个是series,是每一行的内容。
示例:

 for index, row in df.iterrows():
    print(index)                      # 行号
    print(row)                          #这一行的内容,row['列名']
  1. pd.drop() 删除数据
    DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

    label : 要删除的行的索引或列的名称,具体行或列由aixs决定,label可以为列表,选择要删除的部分
    axis=0,指删除index,因此删除columns时要指定axis=1;
    inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe;
    inplace=True,则会直接在原数据上进行删除操作,删除后就回不来了 示例:

_magn_res.drop(['label_M','label_long','label_lati'],axis=1,inplace=True)
删除_magn_res中的'label_M','label_long','label_lati'列
  1. df.sample() 随机选取若干行
    只需要数据集中的一部分,并不需要全部的数据。这个时候我们就要对数据集进行随机的抽样。
    DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)[source]
  2. n 要抽取的行数 df.sample(n=3,random_state=1) 提取3行数据列表 注意,使用random_state,以确保可重复性的
  3. frac 抽取行的比例 例如frac=0.8,就是抽取其中80%。 df.sample(frac=0.8, replace=True, random_state=1)
  4. replace 是否为有放回抽样,True:有放回抽样 False:未放回抽样 True:取行数据后,可以重复放回后再取 False:取行数据后不放回,下次取其它行数据
    注意:当N>总数据容量,replace设置为值时有效
  5. weights 字符索引或概率数组
  6. axis=0:为行字符索引或概率数组 axis=1:为列字符索引或概率数组
  7. random_state int: 随机数发生器种子 或numpy.random.RandomState
    random_state=None,取得数据不重复 random_state=1,可以取得重复数据
  8. axis 选择抽取数据的行还是列 axis=0:抽取行 axis=1:抽取列 注意:当N>总数据容量,replace设置为值时有效 ,此时随机的抽,可能会重复,可以获得超过表本身数目更多的数据,来进行升采样
  9. df[a][df[x]==条件]
    根据后面中括号中条件为真,修改某一列的修改df中x列满足条件的a列的数据
    因此可以在第二个中括号中填写df数据中要满足的调节,第一个中括号为要修改的列
    示例:
data['weight'][data['label_M']==0] = 1  #修改data中的label_M为0的weight列的值为1

OS 笔记

时间转换函数

zipfile 函数

Python的函数

Pickle模块

Numpy 模块

Original: https://blog.csdn.net/weixin_41601540/article/details/114212588
Author: sendoh24
Title: 数据处理笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/740556/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【Python】利用Python拟合函数曲线

    使用Python拟合函数曲线需要用到一些第三方库: numpy:科学计算的基础库(例如:矩阵) matplotlib:绘图库 scipy:科学计算库 如果没有安装过这些库,需要在命…

    Python 2023年8月25日
    038
  • python中常用的内置模块

    内置模块(一) Python内置的模块有很多,我们也已经接触了不少相关模块,接下来咱们就来做一些汇总和介绍。 内置模块有很多 & 模块中的功能也非常多,我们是没有办法注意全…

    Python 2023年6月3日
    071
  • tensorflow的gpu和cpu计算时间对比的小例子

    tensorflow的gpu和cpu计算时间对比的小例子 原创 楚千羽2022-08-05 17:35:18©著作权 文章标签 Python tensorflow 2d 卷积 文章…

    Python 2023年5月24日
    0104
  • 使用 Pygame 构建和可视化数独游戏

    使用 Pygame 构建和可视化数独游戏 原文地址 数独是一个基于逻辑的组合数字放置谜题。目标是用数字填充 9×9 网格,以便每一列、每一行和组成网格的九个 3×3 子网格中的每一…

    Python 2023年9月18日
    054
  • Python中eval()函数的使用

    今天给大家分享一下Python中的eval()函数,如果感觉博主的文章还不错的话,希望大家点赞支持一下博主 文章目录 eval()函数 * 语法 实例 – 实例1 实例…

    Python 2023年8月1日
    061
  • 【Call for papers】ICML-2023(CCF-A/人工智能/2023年1月26日截稿)

    The International Conference on Machine Learning (ICML) is the premier gathering of profes…

    Python 2023年10月10日
    087
  • matlab机械臂建模运动学仿真+轨迹规划

    Matlab机械臂仿真 1.内容参考B站视频:https://www.bilibili.com/video/BV1q44y1x7WC?spm_id_from=333.337.sea…

    Python 2023年10月8日
    039
  • Python数据分析与展示(一)

    一维数据:由对等关系的有序或无序数据构成,采用线性方式组织 列表和数组:一组数据的有序结构 列表:数据类型可以不同数组:数据类型相同 二维数据:由多个一维数据构成,是一维数据的组合…

    Python 2023年8月26日
    042
  • .net lambda表达式合并

    事情的起因是公司一个小伙子问了我个问题 “海哥,来帮我看下这段代码怎么不行” Func nameFilter = x=>x.Name == &quot…

    Python 2023年10月18日
    040
  • 2022年最常见的Python面试题&答案

    本文为Python面试题系列的下篇,和上篇一样,既有基础知识也有进阶版知识,话题涵盖脚本撰写、Python编码和数据结构。如果错过了上篇,戳这里查看。 Q 1. Python支持什…

    Python 2023年9月21日
    027
  • 【Pandas 基础知识 数据修改总结】

    目录 前言 一、 数据修改 loc与iloc 1.单值修改 修改红方英雄刺客荆轲为李白 2.单行修改 修改辅助行为墨子 3.单列修改 修改红方伤害为10 4.按条件修改 修改蓝方伤…

    Python 2023年8月16日
    042
  • latex论文作图(python+matplotlib)

    20210425 – 引言 论文中进行作图,需要对图片中的各种元素进行控制,最近在论文写作过程中为了能够得到匹配文章的高质量图片,也是花了很多心血。除了对图片中的风格进…

    Python 2023年9月3日
    070
  • Convert Numpy to Tensorflow

    We only need to change some grammar used by Tensorflow to replaced Numpy. I collect all ch…

    Python 2023年8月27日
    046
  • SQL Server事务隔离级别

    事务 定义 事务是作为单个逻辑工作单元执行的一系列操作。 一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。 一个事…

    Python 2023年10月23日
    037
  • Pytest—-pytest-csv 执行结果输出csv文件

    【原文链接】Pytest—-pytest-csv 执行结果输出csv文件 Pytest-csv插件用于将自动化脚本执行结果存储为csv格式,我们知道csv格式数据是可以…

    Python 2023年9月15日
    032
  • Pandas:sort_index、sort_values方法的使用

    sort_index和sort_values既是Series类型数据自带的方法,也是DataFrame数据自带的方法。本篇博客以DataFrame为例进行讲述。 1 概览 sort…

    Python 2023年8月8日
    053
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球