掘金 人工智能 3小时前
Python——Pandas(DataFrame结构)
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了DataFrame的基本概念、创建方法、数据访问和修改技巧。DataFrame是Pandas库中的核心数据结构,用于存储表格型数据,具有行索引和列索引,支持多种数据操作。通过二维数组、列表或字典等多种方式创建DataFrame,可以灵活修改索引和列名。文章详细讲解了如何使用索引、切片、loc和iloc等方法访问和修改数据,并展示了DataFrame的常用属性和运算方式。

📊 DataFrame是Pandas库中的核心数据结构,具有行索引和列索引,用于存储表格型数据。它可以通过二维数组、列表或字典等多种方式创建,支持灵活的索引和列名修改。

🔄 访问DataFrame数据可以通过索引、切片、loc和iloc等方法实现。索引用于获取列数据,切片用于获取行数据,loc根据标签索引,iloc根据位置索引,可以精确选择所需数据。

✍️ 修改DataFrame数据可以通过重新赋值实现,支持修改单列、多列、单行或多行数据。可以使用Series、列表或DataFrame等多种方式进行赋值,也可以通过loc、iloc或切片等方式定位修改。

🧮 DataFrame支持多种运算,包括加法、减法等算术运算,以及并集、交集等集合运算。运算时,行索引名和列索引名相同的值进行运算,不同的做并集且对应的值为NaN。

DataFrame

可以根据输出有没有dtype分辨是Series或DataFrame

创建 DataFrame 对象

    用二维数组创建
import numpy as npimport pandas as pd""" ndarray创建DataFrame对象 """d = np.array([[1, 2, 3], [4, 5, 6]])df = pd.DataFrame(d)print(df)  #输出矩阵 2*3

2. 用列表创建

""" 单一列表创建DataFrame对象 """d = ['Tom', 'Bob', 'Linda']df = pd.DataFrame(data=d)print(df)  #输出矩阵 1*3

修改 DataFrame 索引

import pandas as pdd = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18,26], 'height': [172, 176, 188]}print(df)  #输出单行列表df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3'])print(df)  #输出矩阵 3*3""" 修改行索引 """df.index = ['n1', 'n2', 'n3']""" 修改列索引 """df.columns = ['names', 'ages', 'heights']print(df)

访问 DataFrame 数据

import pandas as pdd = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18,26], 'height': [172, 176, 188]}df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3'])print(df)# 索引获取列数据print(df['age'])print(df[['age', 'name']])# 切片获取行数据print(df[0: 1])  # 下标切片左闭右开print(df['p1': 'p2'])  # 标签切片两边都是闭区间# 组合使用print(df[['name', 'age']][0:: 2])print(df[0:: 2][['name', 'age']])
    loc指定标签获取数据(根据行列标签)
import pandas as pdd = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18,26], 'height': [172, 176, 188]}df = pd.DataFrame(d, index=['p1', 'p2', 'p3'])print(df)""" loc允许接两个参数分别是行和列, 且只能接收标签索引 """# 选取行索引为'p1'的数据print(df.loc['p1'])# 选取行索引为'p2'且列索引为'age'的数据print(df.loc['p2', 'age'])# 选取行索引为'p2'且列索引分别为'age'和'name'的数据print(df.loc['p2', ['age', 'name']])print()# 选取行索引分别为'p3'和'p2'且列索引分别为'age'和'name'的数据print(df.loc[['p3', 'p2'], ['age', 'name']])

2. iloc指定下标获取数据(根据位置)

import pandas as pdd = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18,26], 'height': [172, 176, 188]}df = pd.DataFrame(d, index=['p1', 'p2', 'p3'])print(df)print()""" iloc允许接两个参数分别是行和列, 且只能接收整数索引 """ # 选取行索引为0的数据print(df.iloc[0])print()# 选取行索引为1且列索引为1的数据print(df.iloc[1, 1])print()# 选取行索引为1且列索引分别为1和0的数据print(df.iloc[1, [1, 0]])print()# 选取行索引分别为2和1且列索引分别为1和0的数据print(df.iloc[[2, 1], [1, 0]])

列表标签当字典的列去看

修改 DataFrame 数据

import pandas as pdd = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18,26], 'height': [172, 176, 188]}df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3'])print(df)print()
df['height'] = pd.Series([1.72, 1.88, 1.76],index=df.index)df['height'] = [1.72, 1.88, 1.76]df.loc[:, 'age'] = [1, 2, 4]df.iloc[:, 2:3] = [1.72, 1.88, 1.76]print(df)
df[['name', 'age']] = pd.DataFrame({'name': ['Bob', 'Tom', 'Jack'], 'age': [19, 22, 27]}, index=df.index)df[['name', 'age']] = [['Bob', 19], ['Tom', 22], ['Jack', 27]]df.loc[:, ['name', 'age']] = [['Bob', 19], ['Tom',22], ['Jack', 27]]df.iloc[:, :2] = [['Bob', 19], ['Tom', 22], ['Jack', 27]]print(df)
df['weight'] = pd.Series([65, 75, 60], index=df.index)df['weight'] = [65, 75, 60]df.loc[:, 'weight'] = [65, 75, 60]print(df)
df[['grade', 'address']] = pd.DataFrame({'grade':['一', '二', '三'], 'address': ['威宁路', '长宁路', '大马路']}, index=df.index)df[['grade', 'address']] = [['一', '威宁路'], ['二', '长宁路'], ['三', '大马路']]df.loc[:, ['grade', 'address']] = [['一', '威宁路'],['二', '长宁路'], ['三', '大马路']]print(df)
df[1:2] = ['Tony', 23, 178]df.loc['p2'] = pd.Series(['Tony', 23, 178], index=df.columns)df.iloc[1] = ['Tony', 23, 178]df.iloc[1:2] = ['Tony', 23, 178]print(df)
df[:2] = [['Jack', 27, 1.76], ['Tony', 19, 1.72]]df.loc[:'p2'] = [['Jack', 27, 1.76], ['Tony', 19, 1.72]]df.iloc[[0, 1]] = [['Jack', 27, 1.76], ['Tony', 19, 1.72]]print(df)
df.loc['p4'] = ['Toby', 23, 178]print(df)

Series 常用属性

DataFrame运算

import pandas as pdimport numpy as npd = np.arange(9).reshape((3, 3))df1 = pd.DataFrame(d, columns=list('abc'), index=['n1', 'n2', 'n3'])print(df1)print()print(df1 + 1)print()d = np.arange(16).reshape((4, 4))df2 = pd.DataFrame(d, columns=list('dacf'), index=['n1', 'n2', 'n3', 'n4'])print(df2)print()print(df1 + df2)

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

DataFrame Python Pandas
相关文章