首页 > 其他分享 >pandas 基础

pandas 基础

时间:2023-02-02 15:12:37浏览次数:51  
标签:name df 基础 DataFrame column pd pandas

安装及导入

安装

可以使用 pip 安装

pip install pandas

导入

import pandas as pd

数据结构

Series

Series 是一种类似于一维数组的对象,它由一组数据(各种 Numpy 数据类型)以及一组与之相关的数据标签(即索引)组成

Series 只有行索引

例如,创建一个 Series 对象:

ser = pd.Series(data = [1, 2, 3], index = ['a', 'b', 'c'])

其内容为:

a   1
b   2
c   3

Series 的各种方法

DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)

DataFrame 既有行索引又有列索引

例如,创建一个 DataFrame 对象:

df = pd.DataFrame(data = np.array([[1, 2, 3], [4, 5, 6]]), columns = ['a', 'b', 'c'])

其内容为:

   a  b  c
0  1  2  3
1  4  5  6

DataFrame 的各种方法

下面将以 DataFrame 对象为例来介绍 pandas 的基本用法

数据输入

# 使用 read_csv 读取 csv 文件
df = pd.read_csv('file_name')

# 或者:使用 read_csv 读取 csv 文件
# read_csv 默认使用 '\t' 作为数据分隔符,需将分隔符设为 ','
df = pd.read_table('file_name', sep=',')

# 读取 excel 文件
pd.read_excel()

# 读取 json 文件
pd.json()

# 读取 xml 文件
pd.read_xml()

数据输出

# 将 DataFrame 对象写入 csv 文件
df.to_csv('file_name')

# 写入 excel 文件
df.to_excel()

# 写入 json 文件
df.to_json()

# 写入 xml 文件
df.to_xml()

pandas 读取 / 写入文件

查看数据

# DataFrame 对象的头部数据(默认显示 5 条数据)
df.head()

# DataFrame 对象的尾部数据(默认显示 5 条数据)
df.tail()

# DataFrame 对象的索引
df.index

# DataFrame 对象的列名
df.columns

# DataFrame 对象的统计信息
df.describe()

# DataFrame 对象的摘要
df.info()

# DataFrame 对象的形状
df.shape

# 查看数据是否为空
df.isnull()

# 查看各数据类型
df.dtypes

# 查看某一列的所有值
df[['column_name']]         # 方法一
df.loc[:, ['column_name']]  # 方法二

# 查看某一列的变量名及种类
df['column_name'].value_counts()    # 方法一
df['column_name'].unique()          # 方法二

# 查看满足条件的值
df[condition]

# 最大值对应的索引
df.idxmax()

# 最小值对应的索引
df.idxmin()

缺失值处理

pandas 主要用 np.nan 表示缺失数据

一般情况下,运算时默认排除缺失值

# 查找缺失值
df.isnull()

# 查找非缺失值
df.notnull()

# 删除所有含缺失值的行
df.dropna(how='any')

# 用 0 填充缺失值
df.fillna(value=0)

重复值处理

# 查看 DataFrame 数据中的重复值
df.duplicated()

# 统计 DataFrame 数据中重复值的个数
df.duplicated().sum()

# 删除 DataFrame 数据中的重复值
df.drop_duplicates()

索引变换

# 重置索引
df.reset_index()

# 将现有的列设为索引
df.set_index('column_name')

# 修改索引与列标签
df.reindex(index=index_labels, columns=column_labels)   # 方法一
df.rename(index=index_labels, columns=column_labels)    # 方法二

reindex 和 rename

排序

# 按索引排序
df.sort_index()

# 按行列的值排序
df.sort_values()

# 按某一列排序
df.sort_values(by='column_name')

# 按多列排序
df.sort_values(by=['column_name_1', 'column_name_2'])

特别地,如果数据含有空值,可以用 na_position 参数处理空值,例如:

df.sort_values(na_position='first')

特征处理

按照数据的值进行离散化
pd.cut()

# 按照数据的数量进行离散化
pd.qcut()

# 替换数据值
df.replace()

# 替换数据值
df.map()

# one-hot 编码
pd.get_dummies()

具体用法请参考 pandas Document

数据拼接

# 既可以横向拼接,又可以纵向拼接
pd.concat()

# 横向拼接
pd.merge()

# 横向拼接 DataFrame 对象
df.join()

# 纵向拼接 DataFrame 对象
df.append()

Merge, join, concatenate and compare

数据分组

  • 分割:按条件把数据分割成多组
  • 应用:为每组单独应用函数
  • 组合:将处理结果组合成一个数据结构

具体请参考:Groupby API

参考资料

标签:name,df,基础,DataFrame,column,pd,pandas
From: https://www.cnblogs.com/jiankychen/p/pandas.html

相关文章

  • Java基础-浅拷贝和深拷贝
    浅拷贝浅拷贝会在堆上创建一个新的对象,如果原对象的属性是一个引用类型,拷贝的内部对象是原对象内部对象的引用地址,即原对象和拷贝对象用的是同一个内部对象。classInner......
  • python pandas.DataFrame 编写的Excel分割工具
    importpandasaspdfrompandasimportDataFrameasDFimportosclassSplitExcel(object): """ 分割任意的Excel文件,根据指定的列对文件进行分割,并存储到指......
  • 《区块链基础知识25讲》-第六讲-所有权
    区块链可以用来管理和区分所有权所有权证明三要素对所有者的证明对事物被拥有的证明提供一个所有者与事物之间的连接区块链是一个能够被任何人访问,拥有类似账本功能的巨大去......
  • 《区块链基础知识25讲》-第七讲-双花问题
    三种含义复制数字产品引起的问题去中心化的点对点分布式账本种可能存在的问题完全分布式点对点系统种违反完备性的一个例子双花问题可以看作是去中心化点对点系统中数据一......
  • Zookeeper算法基础
    第一章算法基础思考:Zookeeper是如何保证数据一致性的?这也是困扰分布式系统框架的一个难题。1.1拜占庭将军问题拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们......
  • 构建简单百万级别的消息推送基础模型
    问题场景:当用户量增大的时候,系统内的消息推送(比如系统内短信推送,微信,钉钉,极光个推推送)将是我们常见业务常见。当系统中的用户量逐渐增大时候,群发用户消息的推送也将成为......
  • Java 基础 - javaagent原理及实践
    JavaAgent是什么?javaagent本质上可以理解为一个jar包插件,这个jar包通过JVMTI(JVMToolInterface)完成加载,最终借助JPLISAgent(JavaProgrammingLanguageInstrumentation......
  • Qt基础
    基本概念Qt是一个跨平台的C++应用程序开发框架;是标准C++的扩展,C++的语法在Qt中都是支持的。良好封装机制使得Qt的模块化程度非常高,可重用性较好,可以快速上手。Qt......
  • MySQL基础-约束
    1. 概念约束是作用域表中字段上的规则,用于限制存储子啊表中的数据2. 目的保证数据库中数据的正确、有效性和完整性3.分类注意: 约束是作用于表中字段......
  • Java基础-普通类、抽象类、接口类
    普通类和抽象类的区别普通类可以有普通方法,不能有抽象方法;抽象类可以有普通方法和抽象方法普通类可以实例化,抽象类不能实例化普通类必须实现抽象类的抽象方法抽象类......