DataFrame类型(还在补充)

本文介绍了如何在Python中使用pandas库将不同数据结构(list、dict、数组)转换为DataFrame,并展示了DataFrame的基本操作,如查看数据值、形状、数据类型、列名及其维度和数据量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pandas as pd
import numpy as np
// 1.把list转为DataFrame类型,注明列名
list = [["张三",12,"男"],["李四",13,"女"]]
df1 = pd.DataFrame(list,columns=["name","age","sex"])

//把DataFrame类型转为list
list2 = (np.array(df1)).tolist()

// 2.把dict转为DataFrame类型,dict的key直接成为列名
dict = {"name":["张三","李四"],"age":[12,13],'sex':["Man","Woman"]}
df2 = pd.DataFrame(dict)

在这里插入图片描述

// 3.把数组转为DataFrame类型
array = np.array(list)
df3 = pd.DataFrame(array,columns=["name","age","sex"],index=['a','b'])

在这里插入图片描述

// 以数组的形式输出数据
df1.values

在这里插入图片描述

// 输出形状
df1.shape

在这里插入图片描述

// 输出每列的数据类型
df1.dtypes

在这里插入图片描述

// 输出列名
df1.columns
df1.columns.tolist()

在这里插入图片描述

df1.ndim //维度

在这里插入图片描述

df1.size //数据多少(2*3=6)

在这里插入图片描述

### 如何在 pandas DataFrame 中处理空值 #### 检测空值 为了检测 `DataFrame` 中是否存在空值(即 NaN),可以使用两种方法: - 使用 `isnull()` 方法来返回一个布尔类型的 `DataFrame`,其中每个元素表示原数据框对应位置是否为空值[^2]。 ```python import numpy as np import pandas as pd df = pd.DataFrame({ 'name': ['lili', 'lucy', 'pegga', 'alin', np.nan], 'age': [18, 16, np.nan, 23, np.nan], 'salary': [np.nan, 300, np.nan, 1000, 800] }) print(df.isnull()) ``` - 或者使用同义词 `isna()` 来实现相同功能。 ```python print(df.isna()) # 输出结果与 isnull() 完全一致 ``` 这两种方式都可以帮助识别哪些单元格含有缺失的数据。 #### 删除含空值的行或列 对于包含空值的记录,可以选择将其移除。这可以通过调用 `dropna()` 函数完成,该函数允许指定按照行还是按照列的方向去除任何存在空缺的地方。 - **删除整行** 如果某一行中有任何一个字段为空,则整个这条记录都会被丢弃。 ```python cleaned_df_row = df.dropna(axis=0) # axis=0 表示沿行方向操作,默认行为也是axis=0 print(cleaned_df_row) ``` - **删除整列** 当某一列为全部为空时才考虑去掉它;也可以设定阈值参数(thresh),保留至少有N个非NA/NaN值以上的列。 ```python cleaned_df_col = df.dropna(axis=1) # axis=1 表示沿列方向操作 print(cleaned_df_col) # 只保留每列至少有两个有效数值的情况 cleaned_df_thresh = df.dropna(axis=1, thresh=2) print(cleaned_df_thresh) ``` #### 填充空值 另一种常见的做法是对缺失的位置进行合理的填补而不是简单地删掉它们。这里介绍几种常用的填充策略[^3]。 - **固定值替换** 最简单的办法就是给定一个特定常量作为替代品填入所有的空白处。 ```python filled_with_default = df.fillna('default_value') print(filled_with_default) ``` 更具体一点的例子如下所示,针对不同列设置不同的默认值: ```python fill_values = {'name': 'unknown', 'age': 0, 'salary': 500} filled_specifically = df.fillna(value=fill_values) print(filled_specifically) ``` - **前向/后向传播法(forward/backward filling)** 利用已知相邻的有效观测值来进行推测性的补足工作。“ffill”代表向前填充,“bfill”则是指往后看齐。 ```python forward_filled = df.ffill() backward_filled = df.bfill() print("Forward filled:\n", forward_filled) print("\nBackward filled:\n", backward_filled) ``` - **基于插值的方法(interpolation)** 适用于时间序列或其他有序排列的数据集,在两个实际存在的测量点间计算中间可能取到的新数位并以此补充进来。 ```python interpolated_data = df.interpolate(method='linear') # 还可选其他method如'quadratic' print(interpolated_data) ``` 通过上述多种手段相结合的方式能够有效地管理和优化带有缺失项的大规模表格型结构化资料集合。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值