python之Pandas

1.Pandas简介

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

Pandas 名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)。

Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。

Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。

Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

安装方式:

复制代码
pip install pandas
#查看版本
import pandas as pd
pd.__version__

2. Pandas 中数据结构

2.1 Series

Series结构,也称 Series序列,是Pandas常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值具有对应关系。

标签不必是唯一的,但必须是可哈希类型。该对象既支持基于整数的索引,也支持基于标签的索引,并提供了许多方法来执行涉及索引的操作。ndarray 的统计方法已被覆盖,以自动排除缺失的数据(NaN)。

Series可以保存任何数据类型,比如整数、字符串、浮点数、Python对象等,它的标签默认为整数,从0开始依次递增。

Series类似于表格中的一个列(column),类似于一个一维数组:

格式

pandas.Series(data,index,dtype,name,copy)

参数说明:

  • data:一组数据(ndarray 类型)。
  • index:数据索引标签,如果不指定,默认从 0 开始。
  • dtype:数据类型,默认会自己判断。
  • name:设置名称。
  • copy:拷贝数据,默认为 False。

代码示例

python 复制代码
a = [1,2,3]
my_var = pd.Series(a,index=['a','b','c'],dtype=float,name='myvar')
print(my_var)

也可以使用key/value对象创建Series:

python 复制代码
dict1 = {'aa':'a','bb':'b','cc':'c'}
myvar = pd.Series(dict1,index = ['aa','bb','cc'])
myvar
# aa    a
# bb    b
# cc    c
# dtype: object

2.2 DataFrame

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

DataFrame 既有行索引也有列索引,因此它可以被看做是:共用一个索引,由Series组成的字典。

格式

pandas.DataFrame(data,index,coolumns,dtype,copy)

参数说明

  • data:一组数据(ndarray、series, map, lists, dict 等类型)。
  • index:索引值,或者可以称为行标签。
  • columns:列标签,默认为 RangeIndex (0, 1, 2, ..., n) 。
  • dtype:数据类型。
  • copy:拷贝数据,默认为 False。

代码示例

python 复制代码
import pandas as pd
data = [
    ['Google',1],
    ['Baidu',2],
    ['Wiki',3],
]
df = pd.DataFrame(data,columns=['Name','Count'])
print(df)
#      Name  Count
# 0  Google      1
# 1   Baidu      2
# 2    Wiki      3

3. Pandas 处理CSV文件

CSV(Comma-Separated Values,以逗号为分割值,有时也称为字符分割值,因为分割字符也可以不是逗号,其文件以纯文本形式存储表格数据(数字和文本))。

CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

代码演示

复制代码
df = pd.read_csv('anjuke.csv')
print(df)

如果不使用df.to_string(),则输出结果为数据前面5行,和后面5行,而中间部分则以... 代替,如图所示:

因此,需要全部显示需要使用:df.to_string()

如果需要将DataFrame 转换为.csv文件,可以调用:to_csv()

python 复制代码
name = ['xiaofang','xiaoming','xiaohua']
address = ['beijin','tianjin','xian']
ag = [90,80,70]

# 组成字典
dict1 = {'Name':name,'Address':address,'Ag':ag}
df = pd.DataFrame(dict1)

#
print(df)
print(df.Name[0])
#保存dataframe
df.to_csv('my.csv') 

3.1 查看CSV数据

3.1.1 head(n):读取前面的n行,如果不填参数,默认返回前5行
python 复制代码
df = pd.read_csv('anjuke.csv')
print(df.head())
print(df.head(6))
3.1.2 head(n):读取尾部的后n行,如果不填参数,默认返回后5行

如果是空行,各个字段的值都返回NaN

python 复制代码
df = pd.read_csv('anjuke.csv')
print(df.head())
print(df.head(6))
3.1.3 info():返回表格的一些基本信息
python 复制代码
import pandas as pd
df = pd.read_csv('anjuke.csv')
print(df.info())

4.Pandas 处理JSON文件

JSON(JavaScript Object Notation,JavaScript对象表示法),是存储和交换文本信息的语法,类似于XML。JSON语法是JavaScript对象表示语法的子集。

特点

  • 数据在名称/键值对中
  • 数据由逗号 , 分隔
  • 使用斜杆 \ 来转义字符
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象

JSON 比XML更小、更快,更容易解析。Pandas 可以很方便的处理JSON数据。

实例代码:

python 复制代码
df = pd.read_json('site.json')
# print(df.info)
print(df)

to_string() 用于返回 DataFrame 类型的数据. JSON 对象与 Python 字典具有相同的格式,因此可以相互转换。

而当遇到嵌套的复杂JSON数据时,例如mix.js中如图所示:

json 复制代码
{
    "school_name": "ABC primary school",
    "class": "Year 1",
    "students": [
        {
            "id": "A001",
            "name": "Tom",
            "math": 60,
            "physics": 66,
            "chemistry": 61
        },
        {
            "id": "A002",
            "name": "James",
            "math": 89,
            "physics": 76,
            "chemistry": 51
        },
        {
            "id": "A003",
            "name": "Jenny",
            "math": 79,
            "physics": 90,
            "chemistry": 78
        }
    ]
}

这时候我们就需要使用到 json_normalize() 方法将内嵌的数据完整的解析出来,具体来说:json_normalize() 使用了参数 record_path 并设置为 ['students'] 用于展开内嵌的 JSON 数据 students。

代码示例:

python 复制代码
import pandas as pd
import json

# 使用Python JSON 模块载入数据
with open('mix.json','r') as f:
    data = json.loads(f.read())

#将嵌套的JSON数据展平
df = pd.json_normalize(
    data,
    record_path=['students'],
    meta=['school_name','class']
)
print(df)

结果如图

5.Pandas 数据清洗

数据清晰是对一些没有用的数据进行处理的过程。

因为数据集存在数据缺失、数据格式错误、错误数据或者数据重复的情况。如果想要对数据分析更加准确的前提,就必须对错误的数据进行处理。

实战示范:利用Pandas包进行数据清洗,数据集如下:

上表的数据集中包含了四种空数据:n/a 、NA、 --、na、87)]

文本预处理示范代码:见下面资源文件

相关推荐
笨拙的老猴子5 分钟前
[特殊字符] Java GC机制详解:G1、ZGC、Shenandoah全面解析与版本演进对比
java·开发语言
bellus-7 分钟前
ubuntu26测试win10的ollama大模型性能
python
水木流年追梦8 分钟前
大模型入门-Reward 奖励模型训练
开发语言·python·算法·leetcode·正则表达式
JavaWeb学起来8 分钟前
Python学习教程(六)数据结构List(列表)
数据结构·python·python基础·python教程
liuyunshengsir21 分钟前
PyTorch 动态量化(Dynamic Quantization)
人工智能·pytorch·python
电子云与长程纠缠30 分钟前
UE5制作六边形包裹球体效果
开发语言·python·ue5
砍材农夫36 分钟前
物联网 基于netty构建mqtt协议规范(遗嘱与保留消息)
java·开发语言·物联网·netty
DFT计算杂谈39 分钟前
KPROJ编译教程
java·前端·python·算法·conda
froginwe111 小时前
Python3 迭代器与生成器
开发语言
xiaoshuaishuai81 小时前
C# 签名异常与Gas预估失败调试方案
开发语言·网络·tcp/ip·c#