IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【Cheatsheet】详解pandas dataframe的各种操作(创建,读取,添加/删除行列,筛选,去重 等等) -> 正文阅读

[人工智能]【Cheatsheet】详解pandas dataframe的各种操作(创建,读取,添加/删除行列,筛选,去重 等等)

1. 前言

创作开始时间:2021年9月22日11:26:49

在写python的时候经常需要用到pandas dataframe来处理、存储数据。但是一直都是一知半解,所以在此详细研究,以期“一劳久逸”。

2. dataframe的起源

dataframe是pandas库里面的一个数据结构。

Pandas DataFrame is two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns). A Data frame is a two-dimensional data structure, i.e., data is aligned in a tabular fashion in rows and columns. Pandas DataFrame consists of three principal components, the data, rows, and columns.

pandas的介绍如下:(来源:官网 https://pandas.pydata.org/pandas-docs/stable/index.html

pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.

这里: https://www.runoob.com/pandas/pandas-tutorial.html
讲的非常好。

Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

关于dataframe的解释,菜鸟教程(https://www.runoob.com/pandas/pandas-dataframe.html )解释的更好理解一些:

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

3. dataframe基础操作

3.1. 创建dataframe

import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
print (df)

# 创建空的dataframe
df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A'])
print(df)

3.2. dataframe的基本信息

# 基本信息
df.info()

# 
df.shape  # 属性,width and height
len(df) # 方法,只有height 

# 获取col indexes
print(list(df.columns.values))

3.3. 读取和存储dataframe

# 读取
df = pd.read_csv('nba.csv')
print(df.to_string())

# 存储
df.to_csv('site.csv')

3.4. 以下主要参考:

3.5. 按行、按列索引

# 一般方法
df.loc[[0, 1]]
df.loc["day2"]

# 其他

# Using `iloc[]`  通过position索引
print(df.iloc[0][0])

# Using `loc[]` 通过label索引
print(df.loc[0]['Site'])

# Using `at[]`
print(df.at[0,'Site'])

# Using `iat[]`
print(df.iat[0,0])

3.6. 添加一行

df.loc[2] = ['new', 1]

3.7. 添加一列

# 添加索引到列
df['index'] = df.index

# 添加任意一列
df.loc[:, 'new_col'] = pd.Series(['5', '6', '7'], index=df.index)

df.loc[:, 'new_col'] = pd.Series(['5', '6', '7'])

3.8. 删除一行或者一列

# 删除第1行(起始index是0)
df.drop(1, axis=0, inplace=True)

# 删除site列
df.drop('site', axis=1, inplace=True)
# 删除第一列
df.drop(df.columns[[1]], axis=1, inplace=True)
df.drop(df.columns[1], axis=1, inplace=True) # 貌似也可以

3.9. 按列值筛选

df = df[df['col_name'] == "value"]

3.10. 遍历dataframe

import pandas as pd

df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})

for index, row in df.iterrows():
    print(row['c1'], row['c2'])

参考: https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas 但是其中有一个答案说强烈不推荐用iter*方法。

3.11. 保留特定的column(或者删除)

# Using DataFrame.drop
df.drop(df.columns[[1, 2]], axis=1, inplace=True)

# drop by Name
df1 = df1.drop(['B', 'C'], axis=1)

# Select the ones you want
df1 = df[['a','d']]

参考: https://stackoverflow.com/questions/14940743/selecting-excluding-sets-of-columns-in-pandas

3.12. print指定列

# index=False表明不需要输出index
print(df[['col_1', 'col_2']].to_string(index=False))

3.13. 替换列中的值

# return None type
df["col"].replace({"ori_val": "new_val", "ori_val2": "new_val2"}, inplace=True)

参考:https://www.kite.com/python/answers/how-to-replace-column-values-in-a-pandas-dataframe-in-python

3.14. 去除重复值

df = df.drop_duplicates()

# 只考虑特定列
df = df.drop_duplicates(subset=['col_1', 'col_2'], keep='last')

参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop_duplicates.html

4. 扩展

4.1. 根据A列的值,输出B列的值

# apr是col name。是A列
# bug也是col name,是B列
for value in set(df.apr.values):
    print(f"\n\n============== {value}:\n\n")
    print(df[df.apr == value]['bug'].to_string(index=False))

5. 小结

以上,后续再见机补充。

创作结束时间:2021年9月22日20:22:58

6. 参考文献

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:28:02  更:2021-09-23 11:30:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:50:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码