python:DataFrame的使用详解,数据的获取

简介: 在学完series后,我紧接着把DataFrame的创建也过了一遍,今天就开始整理之路了。DataFrame里的数据是按照行和列来进行排列,现在我们一起来看下如何对DataFrame的数据按照行或者列进行选择、遍历以及修改。获取之前我们要清楚DataFrame中的数据情况

在学完series后,我紧接着把DataFrame的创建也过了一遍,今天就开始整理之路了。

DataFrame里的数据是按照行和列来进行排列,现在我们一起来看下如何对DataFrame的数据按照行或者列进行选择、遍历以及修改。获取之前我们要清楚DataFrame中的数据情况,

首先数据的维度是一维还是二维的我们可以使用ndim查看,数据的行数和列数shape,以及行列的索引值index、columns

import pandas as pd
df_dict = {
  'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
  'age':['18','20','19','22'],
  'weight':['50','55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
print(df)
# 获取行数和列数
print(df.shape)
# 获取行索引
print(df.index.tolist())
# 获取列索引
print(df.columns.tolist())
# 获取数据的维度
print(df.ndim)
         name age weight
001  ZhangSan  18     50
002      LiSi  20     55
003    WangWu  19     60
004   ZhaoLiu  22     80
(4, 3)
['001', '002', '003', '004']
['name', 'age', 'weight']
2

若数据量过大,则可以用以下两种方式

获取前两条

df.head(2)

获取后两条

df.tail(2)

接下来讲一讲切片

import pandas as pd
df_dict = {
  'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
  'age':['18','20','19','22'],
  'weight':['50','55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
# 通过位置索引切片获取一行
print(df[0:1])
# 通过位置索引切片获取多行
print(df[0:3])
# 获取多行里面的某几列
print(df[1:3][['name','age']])
# 获取DataFrame的列
print(df['name'])
# 如果获取多个列
print(df[['name','age']])
         name age weight
001  ZhangSan  18     50
         name age weight
001  ZhangSan  18     50
002      LiSi  20     55
003    WangWu  19     60
       name age
002    LiSi  20
003  WangWu  19
001    ZhangSan
002        LiSi
003      WangWu
004     ZhaoLiu
Name: name, dtype: object
         name age
001  ZhangSan  18
002      LiSi  20
003    WangWu  19
004   ZhaoLiu  22

这和series的切片差不多,类似的用法

df[]不支持直接输入标签索引获取行数据,例如:df[‘001’]

这种方式可以获取一列数据,列如:df[‘name’]

如果想获取多行里面的某几列可写成:df[行][列],例如:df[1:3][[‘name’,‘age’]],将列索引值放到同一个列表中,再将列表放到第二个方括号中.

当然我们也可以使用另外两个比较好用的方法进行获取数据:通过行标签索引筛选loc[],通过行位置索引筛选iloc[]:。

1.df.loc[] 通过标签索引获取行数据,它的语法结构是这样的:df.loc[[行],[列]],方括号中用逗号分隔,左侧是行、右侧是列。千万注意:如果行或者列使用切片的时候,要把方括号去掉,列df.loc[‘001’:‘003’,‘name’:‘weight’]。

2.df.iloc[] 通过位置索引获取行数据,他的操作和loc[]操作是一样的,只要将标签索引改成位置索引就好了。

# 取一行
print(df.iloc[1])
# 取连续多行
print(df.iloc[0:2])
# 取间断的多行
print(df.iloc[[0,2],:])
# 取某一列
print(df.iloc[:,1])
# 某一个值
print(df.iloc[1,0])

但是要注意!!的是:loc和iloc的切片操作在是否包含切片终点的数据有差异。loc[‘001’:‘003’]的结果中包含行索引003对应的行。iloc[0:2] 结果中不包含序号为2的数据,切片终点对应的数据不在筛选结果中。

我们还可以将数据遍历出来

iterrows(): 按行遍历,将DataFrame的每一行转化为(index, Series)对。index为行索引值,Series为该行对应的数据。

for index,row_data in df.iterrows():
    print(index,row_data)

iteritems:()按列遍历,将DataFrame的每一列转化为(column, Series)对。column为列索引的值,Series为该列对应的数据。

for col,col_data in df.iteritems():
    print(col)

相关文章
|
25天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
10天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
20 1
|
11天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
11天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
49 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
41 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
24天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
52 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
46 2
|
10天前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
20 0
|
1月前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第10天】本文介绍了OAuth 2.0和JSON Web Tokens (JWT) 两种现代Web应用中最流行的认证机制。通过使用Flask-OAuthlib和PyJWT库,详细展示了如何在Python环境中实现这两种认证方式,从而提升系统的安全性和开发效率。OAuth 2.0适用于授权过程,JWT则简化了认证流程,确保每次请求的安全性。结合两者,可以构建出既安全又高效的认证体系。
43 1