python-pandas用法大全

这篇具有很好参考价值的文章主要介绍了python-pandas用法大全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 修改 DataFrame 某一列的数据类型

问题描述:想要把 DataFrame 最后一列 label 的数据格式从 float改成int

原来:
python-pandas用法大全
代码:

bank2["label"] = bank2["label"].astype(int)

out:
python-pandas用法大全

2 读取和保存

读取时要注意的参数有 sep 等等。

# 读取
file_path = "./data/bank/"
bank = pd.read_csv(file_path + 'bank-full.csv',sep=';')
# 保存
bank.to_csv("bank.csv", index=False)

3 特定值的替换

data2 = data2.replace(' >50K.', ' >50K')

4 两个 DataFrame 的连接

在表头顺序一样的情况下,可以这样无脑连接两个 DataFrame

data1 = pd.read_csv(file_path + 'adult.data', header=None)
data2 = pd.read_csv(file_path + 'adult.test',header=None)
adult = pd.concat([data1,data2])

有关 np.concat 的可以看:https://www.jb51.net/article/164905.htm
本文主要讲 np.merge()

但是如果两个 DataFrame 的表头不一样(顺序不一样或是部分feature不一样),则需要用到 np.merge(),并设置参数 joinjoin_axes 进行这样的连接。

np.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)

4.1 join

如果两个表头顺序不一样,修改参数 join='inner' ,即可,他会自动识别。

y_in
Out[9]: 
      label  1 probability  ...  9 probability  5 probability
0         0        0.00000  ...        0.00000        0.00000
1         7        0.00000  ...        0.00002        0.00000
2         8        0.00000  ...        0.00615        0.00225
3         1        0.99926  ...        0.00000        0.00001
4         0        0.00000  ...        0.00000        0.00004
    ...            ...  ...            ...            ...
9995      9        0.00000  ...        0.97068        0.00000
9996      9        0.00007  ...        0.98485        0.00001
9997      5        0.00000  ...        0.00000        1.00000
9998      7        0.00000  ...        0.00011        0.00000
9999      0        0.00000  ...        0.00000        0.00000

[10000 rows x 11 columns]

y_out
Out[10]: 
      label  1 probability  ...  8 probability  5 probability
0         1        0.90634  ...        0.05864        0.00175
1         2        0.00001  ...        0.00000        0.00001
2         6        0.00000  ...        0.00001        0.00002
3         0        0.00000  ...        0.00006        0.00011
4         6        0.00001  ...        0.00004        0.00004
    ...            ...  ...            ...            ...
9995      8        0.00000  ...        0.99915        0.00002
9996      0        0.00000  ...        0.00000        0.00000
9997      4        0.00040  ...        0.04294        0.00120
9998      2        0.00028  ...        0.00003        0.00000
9999      1        0.99788  ...        0.00115        0.00002

[10000 rows x 11 columns]

pd.concat([y_in, y_out], axis=0, join='inner')
Out[11]: 
      label  1 probability  ...  9 probability  5 probability
0         0        0.00000  ...        0.00000        0.00000
1         7        0.00000  ...        0.00002        0.00000
2         8        0.00000  ...        0.00615        0.00225
3         1        0.99926  ...        0.00000        0.00001
4         0        0.00000  ...        0.00000        0.00004
    ...            ...  ...            ...            ...
9995      8        0.00000  ...        0.00000        0.00002
9996      0        0.00000  ...        0.00000        0.00000
9997      4        0.00040  ...        0.41741        0.00120
9998      2        0.00028  ...        0.00000        0.00000
9999      1        0.99788  ...        0.00000        0.00002

[20000 rows x 11 columns]

或者说我想横着拼接:

result = pd.concat([df1, df4], axis=1, join='inner')

out:
python-pandas用法大全
通过以下例子来区分 pd.concat & pd.merge 以及“inner” 和 “outer"参数的区别:

import  pandas as pd
import numpy  as np
random = np.random.RandomState(0)  #随机数种子,相同种子下每次运行生成的随机数相同
df1=pd.DataFrame(random.randn(3,4),columns=['a','b','c','d'])
df1
Out[1]: 
          a         b         c         d
0  1.764052  0.400157  0.978738  2.240893
1  1.867558 -0.977278  0.950088 -0.151357
2 -0.103219  0.410599  0.144044  1.454274

random = np.random.RandomState(0)
df2=pd.DataFrame(random.randn(2,3),columns=['b','d','a'],index=["a1","a2"])
df2
Out[2]: 
           b         d         a
a1  1.764052  0.400157  0.978738
a2  2.240893  1.867558 -0.977278

pd.concat([df1, df2], axis=0, join='inner')
Out[3]: 
           a         b         d
0   1.764052  0.400157  2.240893
1   1.867558 -0.977278 -0.151357
2  -0.103219  0.410599  1.454274
a1  0.978738  1.764052  0.400157
a2 -0.977278  2.240893  1.867558

pd.concat([df1, df2], axis=0, join='outer')
Out[4]: 
           a         b         c         d
0   1.764052  0.400157  0.978738  2.240893
1   1.867558 -0.977278  0.950088 -0.151357
2  -0.103219  0.410599  0.144044  1.454274
a1  0.978738  1.764052       NaN  0.400157
a2 -0.977278  2.240893       NaN  1.867558

pd.merge(df1,df2,how="outer")
Out[7]: 
          a         b         c         d
0  1.764052  0.400157  0.978738  2.240893
1  1.867558 -0.977278  0.950088 -0.151357
2 -0.103219  0.410599  0.144044  1.454274
3  0.978738  1.764052       NaN  0.400157
4 -0.977278  2.240893       NaN  1.867558

# 当没有两个表格没有重合的属性值时,会汇集成空表
pd.merge(df1,df2,how="inner")
Out[8]: 
Empty DataFrame
Columns: [a, b, c, d]
Index: []

4.2 某列作为拼接的依据

如果以index 作为合并的标志:

pd.merge(df1,df2,how='left',left_index=True,right_on=True)

如果以某一列为“辨识列”,则需要用到 join_axes 参数。

pd.merge(df1,df4,how='outer',left_on=df1['df1的某一列'],right_on=df4['df4的某一列'])

5 删除某一列

5.1 删除第n列

例如删除第1列:

data = data.drop([1],axis=1)

5.2 删除特定名称列

例如删除名称为 label 的列:

data = data.drop(["label"],axis=1)

6 行、列重排

6.1列重排

当我得到这种dataframe 时:
python-pandas用法大全
我想要让列按照 [“0 probability”, “1 probability”, …, “membership”] 这样排,可以通过 dataframe.sort_index() 函数:

data.sort_index(axis=1)

out:
python-pandas用法大全

6.2 行重排

如果想根据index对所有行进行排序,则:

data.sort_index()

out:
python-pandas用法大全

6.3 根据某一列的值排序

如果我想根据 “1 probability” 列的值进行排序,,则需要用到 sort_values() 函数,代码如下:

data.sort_values(axis=0, by="1 probability")

out:
python-pandas用法大全
通过 ascending 参数可以决定排序是从大到小还是从小到大:
python-pandas用法大全
当然,这里的 by参数 也可以是一个列表,表示优先满足第一排序,在满足第二排序…

6.4 随机打乱所有行

train_data = train_data.reindex(np.random.permutation(train_data.index))

7 修改某列的名称

7.1 全局修改

dataframe.columns = [“a”, “b”, “c”, “d”, “e”]
示例:
python-pandas用法大全

7.2 局部修改

选定某几行或列的名称进行修改,我们采用 pandas.DataFrame.rename() 函数:
若要修改某几的名称,通过 dataframe.rename(columns={"原名称":"修改后名称"})
若要修改某几的名称,通过 dataframe.rename(index={"原名称":"修改后名称"})

示例:
python-pandas用法大全

参考:
https://blog.csdn.net/qq_41853758/article/details/83280104文章来源地址https://www.toymoban.com/news/detail-452172.html

到了这里,关于python-pandas用法大全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Pandas:DataFrame 一列切分成多列、分隔符切分选字段

    创建一个复杂又简单的数据集 split expand:这个参数直接将分列后的结果转换成 DataFrame drop axis 是指处哪一个轴 columns 是指某一列或者多列 inplaces 是否替换原来的 dataframe

    2024年02月12日
    浏览(67)
  • python的pandas中如何在dataframe中插入一行或一列数据?

    dataframe类型是如何插入一行或一列数据的呢?这个需求在本文中将会进行讨论。相比较ndarray类型的同样的“数据插入”需求,dataframe的实现方式,则不是很好用。本文以一个dataframe类型变量为例,测试插入一行数据或者一列数据的方式方法。测试环境:win10,python@3.11.0,nu

    2024年02月03日
    浏览(65)
  • Python中Pandas库提供的函数——pd.DataFrame的基本用法

    pd.DataFrame 是 Pandas 库中的一个类,用于创建和操作数据框(DataFrame)。DataFrame 是 Pandas 的核心数据结构,用于以表格形式和处理数据,类似提供电子表格或数据库表格。类了创建 pd.DataFrame 数据框、访问数据、进行数据操作和分析的方法和属性。 表格形式 :DataFrame是一个二维

    2024年02月05日
    浏览(57)
  • python-pandas库

    目录 目录 目录 1.pandas库简介(https://www.gairuo.com/p/pandas-overview) 2.pandas库read_csv方法(https://zhuanlan.zhihu.com/p/340441922?utm_medium=socialutm_oi=27819925045248) 1.pandas库简介(https://www.gairuo.com/p/pandas-overview) 用途:     Pandas 可以用来进来各种表格数据处理,实现复杂的处理逻辑,这些

    2024年02月02日
    浏览(43)
  • 【头歌】——数据分析与实践-python-Pandas 初体验-Pandas数据取值与选择-Pandas进阶

    第1关 了解数据处理对象–Series 第2关 了解数据处理对象-DataFrame 第3关 读取 CSV 格式数据 第4关 数据的基本操作——排序 第5关 数据的基本操作——删除 第6关 数据的基本操作——算术运算 第7关 数据的基本操作——去重 第8关 数据重塑 第1关 Series数据选择 第2关 DataFrame数据

    2024年01月22日
    浏览(152)
  • python dataframe 删除 选择 某一列满足指定条件的所有行

    python dataframe 删除某一列大于指定值的所有行 python dataframe 只保留某一列等于指定值的所有行 python dataframe 删除某一列等于指定值的所有行 Python matplotlib 画图 显示中文 中文乱码 无法显示负号 方式一,删除年份大于1999的所有行 方式二,只保留年份1999和2009的所有行 方式三,

    2024年02月12日
    浏览(48)
  • Python数据分析实战-Series转DataFrame并将index设为新的一列(附源码和实现效果)

    实现功能 Series转DataFrame并将index设为新的一列 实现代码 实现效果 本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据挖掘相关科研工作,对数据挖掘有一定认知和理解,会结合自身科研实践经历不定期分享关于python机器学习、深度学习、数据挖掘基础知识与案

    2024年02月09日
    浏览(42)
  • Python pandas库怎样根据某一列的数据将所有数据分类

    在数据处理中,数据分类是一项基础而重要的工作。本文将介绍如何使用Python pandas库,根据某一列的数据将所有数据分类。 1. 读取数据文件,生成数据框(DataFrame)对象 首先,需要读取数据文件,生成数据框(DataFrame)对象。这里以读取CSV格式的数据文件为例,代码如下:

    2024年02月07日
    浏览(49)
  • python中Pandas之DataFrame索引、选取数据

    总结一下 DataFrame 索引问题 先创建一个简单的 DataFrame 。 DataFrame 中有两种索引: 行索引( index ):对应最左边那一竖列 列索引( columns ):对应最上面那一横行 两种索引默认均为从 0 开始的自增整数。 可以使用 index 这个参数指定行索引, columns 这个参数指定列索引。 输出此时

    2023年04月08日
    浏览(51)
  • 【pandas】Python读取DataFrame的某行或某列

    行索引(index) :对应最左边那一竖列 列索引(columns) :对应最上面那一横行 .loc[]官方释义: Access a group of rows and columns by label(s) or a boolean array.(通过标签或布尔数组访问一组行和列) 官方链接 loc使用索引来取值,基础用法 df.loc[[行索引],[列索引]] .iloc[]官方释义: Purely inte

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包