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)]

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

相关推荐
k0933几秒前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯8 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue10 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧12 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
千天夜20 分钟前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
测试界的酸菜鱼23 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
羊小猪~~27 分钟前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
晨曦_子画33 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Black_Friend41 分钟前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
放飞自我的Coder1 小时前
【python ROUGE BLEU jiaba.cut NLP常用的指标计算】
python·自然语言处理·bleu·rouge·jieba分词