首页 > 其他分享 >pandas-数据索引和修改

pandas-数据索引和修改

时间:2023-08-25 17:55:37浏览次数:39  
标签:修改 frame two 索引 zero print data pandas

数据索引和修改

目录

数据选取

  1. 行列过滤:选取指定的行或者列
  2. 条件过滤:对列的数据设置过滤条件
  3. 函数过滤:通过函数设置更加复杂的过滤条件
import pandas as pd 
   
data_list = [['A0', 'B0', 'C0', 'D0', 'E0', 'F0', 'G0', 'H0', ],
             ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1',],
             ['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', ],
             ['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', ],
             ['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', ]]
             
# 生成 DataFrame
data = pd.DataFrame(data_list, columns=list('ABCDEFGH')) 
data.index = ['zero','one','two','three','four']
print(data)
# 执行结果
        A   B   C   D   E   F   G   H
zero   A0  B0  C0  D0  E0  F0  G0  H0
one    A1  B1  C1  D1  E1  F1  G1  H1
two    A2  B2  C2  D2  E2  F2  G2  H2
three  A3  B3  C3  D3  E3  F3  G3  H3
four   A4  B4  C4  D4  E4  F4  G4  H4

列选择

# 方法1: DataFrame.column, 数据在前,列名在后,中间使用‘.’来连接
print(data.A)

# 方法2: DataFrame[columns], 数据在前,后跟列名,列名使用中括号包裹  
print(data['A'])

zero     A0
one      A1
two      A2
three    A3
four     A4
Name: A, dtype: object
# 选择多个列
print(data[['A','D','E']])
        A   D   E
zero   A0  D0  E0
one    A1  D1  E1
two    A2  D2  E2
three  A3  D3  E3
four   A4  D4  E4

行索引

# 方法.1 直接index 索引

# 左闭右开区间,包含 0,但不包含 1,所以只表示 1 行。
print(data[0:1])

       A   B   C   D   E   F   G   H
zero  A0  B0  C0  D0  E0  F0  G0  H0


# 选择多行
print(data[1:4])

        A   B   C   D   E   F   G   H
one    A1  B1  C1  D1  E1  F1  G1  H1
two    A2  B2  C2  D2  E2  F2  G2  H2
three  A3  B3  C3  D3  E3  F3  G3  H3

# 方法2 loc函数通过标签索引选择 行数据

同时行列索引

当需要同时选取行和列时,就需要同时使用行索引和列索引,或者同时使用列序号和行序号。对应的方法有 lociloc

DataFrame.iloc

iloc 方法的参数值是行的整数序号,和列的整数序号

参数可以是索引值,索引列表,索引范围

data.index = ['zero','one','two','three','four']
print(data)
        A   B   C   D   E   F   G   H
zero   A0  B0  C0  D0  E0  F0  G0  H0
one    A1  B1  C1  D1  E1  F1  G1  H1
two    A2  B2  C2  D2  E2  F2  G2  H2
three  A3  B3  C3  D3  E3  F3  G3  H3
four   A4  B4  C4  D4  E4  F4  G4  H4

# 选择行
#  行范围参数和列范围参数之间使用逗号分隔 
print(data.iloc[[1,4], :])
       A   B   C   D   E   F   G   H
one   A1  B1  C1  D1  E1  F1  G1  H1
four  A4  B4  C4  D4  E4  F4  G4  H4


# 选择列
print(data.iloc[:, 2:6])
        C   D   E   F
zero   C0  D0  E0  F0
one    C1  D1  E1  F1
two    C2  D2  E2  F2
three  C3  D3  E3  F3
four   C4  D4  E4  F4

# 同时选择行,同时选择列
print(data.iloc[1:4, 2])
one      C1
two      C2
three    C3
Name: C, dtype: object

# 同时选择行,同时选择列
print(data.iloc[1, 0])
A1

# 获取 data 中,行索引在列表 [0,2,4] 中,列名称在列表 ['B','D','H'] 中的所有数据。
print(data.iloc[[0,2,4], [1,2,4]])
       B   C   E
zero  B0  C0  E0
two   B2  C2  E2
four  B4  C4  E4

# 获取 data 中,行索引在列表 [0,2,4] 中,列名称为 F 的所有数据。
print(data.iloc[[0,2,4], 5])

0    F0
2    F2
4    F4
Name: F, dtype: object


DataFrame.loc

loc 方法接收两个参数,参数之间用逗号分隔。其中第一个参数表示行的范围,第二个参数表示列的范围。

#  行索引使用范围参数
import pandas as pd
data_list = [['A0', 'B0', 'C0', 'D0', 'E0', 'F0', 'G0', 'H0', ],
             ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1',],
             ['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', ],
             ['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', ],
             ['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', ]]
             
# 生成 DataFrame
data = pd.DataFrame(data_list, columns=list('ABCDEFGH')) 
data.index = ['zero','one','two','three','four']
# print(data)

# 选取指定的行
print(data.loc["zero":"one", :])
       A   B   C   D   E   F   G   H
zero  A0  B0  C0  D0  E0  F0  G0  H0
one   A1  B1  C1  D1  E1  F1  G1  H1

# 按范围选取列
print(data.loc[:, ["A","D"]])
        A   D
zero   A0  D0
one    A1  D1
two    A2  D2
three  A3  D3
four   A4  D4

# 行和列也可以同时设置
print(data.loc[["zero","two","four"], "B":"E"])
       B   C   D   E
zero  B0  C0  D0  E0
two   B2  C2  D2  E2
four  B4  C4  D4  E4

修改数据

import pandas as pd
data = {
    'state': ['python', 'python', 'go', 'java'],
    'year': [2001, 2002, 2001, 2002],
    'pop': [1.7, 3.6, 2.4, 2.9]
}
frame = pd.DataFrame(data)
print(frame)

#     state  year  pop
# 0  python  2001  1.7
# 1  python  2002  3.6
# 2      go  2001  2.4
# 3    java  2002  2.9

# 修改单一数据
frame.loc[2,"pop"]=5.0

# 修改整列数据
frame.loc[:,"year"]=[2018, 2019, 2020, 2021]
print(frame)
    state  year  pop
0  python  2018  1.7
1  python  2019  3.6
2      go  2020  5.0
3    java  2021  2.9

# 修改行数据
frame.loc[0,:]=["c++", 1998, 2.1]

# 将一个值赋值给所选区域
frame.iloc[:,2:] = 'same'
print(frame)

#     state  year   pop
# 0     c++  1998  same
# 1  python  2005  same
# 2      go  2016  same
# 3    java  2023  same

# 将精确修改区域内所有数据
frame.iloc[[0, 2], [0, 2]] = [["rust", 4.1],
                              ["sql", 0.3]]
print(frame) 	

# 1  python  2005  same
# 2     sql  2016   0.3
# 3    java  2023  same

参考资料

条件过滤

import pandas as pd
data = {
    'state': ['python', 'python', 'go', 'java'],
    'year': [2001, 2005, 2016, 2023],
    'pop': [1.7, 3.6, 2.4, 2.9]
}
frame = pd.DataFrame(data)
print(frame)

#     state  year  pop
# 0  python  2001  1.7
# 1  python  2005  3.6
# 2      go  2016  2.4
# 3    java  2023  2.9

print(frame["year"]>2010)
#0    False
#1    False
#2     True
#3     True

df=frame[frame["year"]>2010]
print(df)

#  state  year  pop
#2    go  2016  2.4
#3  java  2023  2.9

参考资料

https://www.cnblogs.com/wang_yb/p/17388485.html

参考资料1

参考资料2

标签:修改,frame,two,索引,zero,print,data,pandas
From: https://www.cnblogs.com/tian777/p/17657630.html

相关文章

  • Pandas 使用教程 CSV
    CSV(Comma-SeparatedValues,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。AttributeError:partiallyinitializedmodule'pandas'hasnoattribute......
  • Pandas 使用教程 JSON、CSV 转换
    Pandas可以很方便的处理JSON数据demo.json[{"name":"张三","age":23,"gender":true},{"name":"李四","age":24,"gender":tru......
  • Pandas 使用教程 Series、DataFrame
    目录Series(一维数据)指定索引值使用key/value对象,创建对象设置Series名称参数DataFrame(二维数据)使用字典(key/value)创建loc属性返回指定行的数据Pandas一个强大的分析结构化数据的工具集,基础是Numpy(提供高性能的矩阵运算)Pandas可以从各种文件格式比如CSV、JSON、SQL、M......
  • 微信开发之一键修改群聊备注的技术实现
    修改群备注修改群名备注后,如看到群备注未更改,是手机缓存问题,可以连续点击进入其他群,在点击进入修改的群,再返回即可看到修改后的群备注名,群名称的备注仅自己可见请求URL:http://域名地址/modifyGroupRemark请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login......
  • 通过pandas读取excel的数据,但是读取的结果显示后面四位变了?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Pandas数据处理的问题,一起来看看吧。请教:通过pandas读取exlce的数据,其中,A列的数据为账号数字,原数据为6226093585801315,但是读取的结果显示6226093585800672,后面四位变了。df=pd.read_excel('销售数据.xlsx').......
  • Tomcat修改端口号
    1.首先找到tomcat安装目录下的conf文件夹中的server.xml文件 2.找到protocol值为HTTP/1.1的Connector标签,其中port就是端口号,它原先的值为8080,现在我把它改成8081 3.运行tomcat,可以发现它的端口号变成了8081......
  • # yyds干货盘点 # 通过pandas读取excel的数据,但是读取的结果显示后面四位变了?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Pandas数据处理的问题,一起来看看吧。请教:通过pandas读取exlce的数据,其中,A列的数据为账号数字,原数据为6226093585801315,但是读取的结果显示6226093585800672,后面四位变了。df=pd.read_excel('销售数据.xlsx').conb......
  • ci框架修改默认控制器
    以前做ci框架开发碰到的当你的网站不存在某个URI或者用户直接从根目录访问的时候,ci会加载默认控制器。打开application/config/routes.php文件来设置默认控制器:$route['default_controller']='Blog';这里的Blog就是希望使用的控制器的名字。如果此时你不指定任何URI片......
  • 动态修改日志级别,太有用了!
    背景我们在系统中一般都会打印一些日志,并且在开发、测试、生产各个环境中的日志级别可能不一样。在开发过程中为了方便调试打印了很多debug日志,但是生产环境为了性能,为了节约存储资源,我们会将日志级别设置为info或error较高的级别,只保留一些关键的必要的日志。当线上出现问题需......
  • 【pandas小技巧】--DataFrame的显示样式
    上一篇介绍了DataFrame的显示参数,主要是对DataFrame中值进行调整。本篇介绍DataFrame的显示样式的调整,显示样式主要是对表格本身的调整,比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效的获取主要信息。下面介绍一些针对单个数据和批量数据的样式调整方式,让DataFram......