pandas 库前置知识

pandas 库

*
Pandas

+ 创建一个 Series 对象 pd.Series()
+ 创建一个 DataFrame 对象 pd.DataFrame()
+ 数据清洗
+
* 缺失值 NaN
*
查找缺失值 isna()
删除缺失值 dropna()
* 重复值
*
查找重复值 df.duplicated()
删除重复值 df.drop_duplicates()
* 异常值
*
检查异常值 df.describe()
筛选数据 df = [ df[列名] < num ]
+ 数据整理
+
* 转换日期数据 pd.to_datetime()
* 添加新列 df[‘要添加的新列的名字’]
+ 数据写入 df.to_csv(path, encoding, index)
+ 分组与聚合

Pandas


import pandas as pd

pandas 的数据结构有 SeriesDataFrame

Series 主要由一组数据及其对应的索引组成。

以下是一个 Series 对象例子:

import pandas as pd
s = pd.Series(['读书', '健身', '余闲', '投资'], index=[0, 1, 2, 3])
print(s)

输出:

0    读书
1    健身
2    余闲
3    投资
dtype: object

左边的数字是索引,右边的是数据。

数据底部的 dtype 指的是,pandas 库中的数据类型,而对应的 object 是 pandas 自定义的字符串类型。

创建一个 Series 对象 pd.Series()

import pandas as pd
s = pd.Series(['读书', '健身', '余闲', '投资'], index=[0, 1, 2, 3])

print(s)

以上是传入链表来创建 Series 对象,还有传入字典等方式:

data = {'《三国演义》':'罗贯中', '《水浒传》':'施耐庵'}
data = 1
import numpy as np
data = np.array( [1, 2, 3] )
data = 'hello'
s = pd.Series( data )

创建一个 DataFrame 对象 pd.DataFrame()

DataFrame 对象是一种表格型的数据结构,包含行索引、列索引以及一组数据。

import pandas as pd
data = [['《三国演义》', '罗贯中'], ['《水浒 传》', '施耐庵']]
df = pd.DataFrame(data, columns=['书籍', '作者'], dtype=float)
print(df)

输出:

      书籍      作者
0  《三国演义》  罗贯中
1  《水浒 传》   施耐庵

行索引:0、1,列索引:书籍、作者,表格里面的是数据。

创建 DataFrame 对象的方法是: pd.DataFrame()

Series 对象和 DataFrame 对象之间的联系就在于:DataFrame 对象可以被看作是由 Series 对象所组成的。

  • series,只是一个一维数据结构,由 index 和 value 组成。
  • dataframe,是一个二维结构,除了拥有 index 和 value 之外,还拥有 column。

df['&#x5217;&#x7D22;&#x5F15;'] 提取 DataFrame 对象中某一列的数据,其实是一个 Series 对象。

import pandas as pd
data = [['《三国演义》', '罗贯中'], ['《水浒 传》', '施耐庵']]
df = pd.DataFrame(data, columns=['书籍', '作者'], dtype=float)

print(df['书籍'])
print(type(df['书籍']))

输出:

Name: 书籍, dtype: object
<class 'pandas.core.series.Series'>

数据清洗

df.info(),显示整体的数据的基本信息,有一个大概的印象。

主要包括:整体数据的总行数、各列数据类型统计、各列的列名、各列总共有多少非空数据、表格占用的系统空间等。

缺失值 NaN

当非空数据与数据总量不一致时,说明这份数据有可能存在缺失值,处理这些缺失值的第一步,就是找到它们。

pandas 库前置知识
; 查找缺失值 isna()

在 pandas 库中,用 isna() 方法来查找 DataFrame、Series 对象中的缺失值。

df.isna() 返回的是 DataFrame 对象, Series.isna() 返回的就是 Series 对象。

返回对象中的内容都是布尔值:

  • 缺失数据会用 True 来表示
  • False 则代表这里的数据不缺失

对 DataFrame 对象使用 df.head() 方法默认可以查看数据的前 5 行, df.tail() 方法则默认可以查看数据的后 5 行。

pandas 库中,NaN 代表的就是缺失数据。

删除缺失值 dropna()

对于缺失值,最简单的方法就是将含有缺失值的行直接删除。

如果总体的数据量比较大,缺失值占总数据量的比重也比较低,将含有缺失值的行删除后并不会妨碍后续的分析。

当然除了删除之外还有其它处理方法,比如给缺失值填充数据。

在 pandas 库中,用 df.dropna() 会删除 DataFrame、Series 对象中有缺失值的行。

如果我们需要针对某几列的缺失数据进行删除,就需要用到 df.dropna() 的 subset 参数。

df.dropna(subset = ['书籍', '作者'])

重复值

查找重复值 df.duplicated()

df.duplicated()方法来查找 DataFrame 对象中的重复数据。

返回一个 Series 对象,找出所有重复值。重复为 True,不重复为 False。

删除重复值 df.drop_duplicates()
df = df.drop_duplicates()

异常值

检查异常值 df.describe()

describe() 方法返回出来的统计信息分别代表数值型数据的频数统计、平均值、标准差、最小值、第一四分位数、中位数、第三四分位数以及最大值。

只需要观察最大最小值、平均数、中位数就好,一般异常值都在特殊位置。

筛选数据 df = [ df[列名] < num ]

df = df[ df['单价']  200 ]

数据整理

数据整理指的是我们在数据分析前对所需 字段(表格的列)进行数据排序、数据转换、数据抽取、数据合并、数据计算等准备操作。

转换日期数据 pd.to_datetime()

Python 中有专门储存时间日期的数据类型 —— datetime,我们对日期数据进行操作都需要 TA。

但 Pandas 中的日期数据(如 2021-10-08),日期列数据并不是 datetime 类型,而是 objeect(pandas自定义的字符串类型)。

在 pandas 库中我们可以使用 pd.to_datetime(arg, format) 来将 DataFrame 对象或者 Series 对象的数据类型转换成 datetime 类型。

其中的 arg 参数为我们要转换的数据,它可以是 DataFrame 对象或 Series 对象。

format 参数为 datetime 类型的日期格式,如数据,是以年-月-日的形式出现的,那对应的 format 就是 ‘%Y-%m-%d’。


Series = pd.to_datetime(mask_data['日期'], format = '%Y-%m-%d')

将 ‘日期’ 字段转换成 datetime 类型后,我们就可以直接进行增、删、改、查等各种操作。如:


year_data = Series.dt.year

month_data = Series.dt.month

day_data = Series.dt.day

添加新列 df[‘要添加的新列的名字’]

df['月份'] = n

数据写入 df.to_csv(path, encoding, index)

数据整理完了,写入 csv 文件中。

df.to_csv(path, encoding='utf-8')

分组与聚合

分组是指根据一个或多个键将数据拆分为多个组的过程,这里的键可以理解为分组的条件。

聚合指的是任何能够从数组产生标量值的数据转换过程。

分组、聚合操作一般会同时出现,用于计算分组数据的统计值或实现其他功能。

pandas 库前置知识

除此之外,不只有单层分组聚合操作,还有多层分组聚合操作。

单层分组聚合操作:

pandas 库前置知识
df = df.groupby('班级')['成绩'].mean()

多层分组聚合操作:

pandas 库前置知识
df = df.groupby(['班级', '性别'])['成绩'].mean()

Original: https://blog.csdn.net/qq_41739364/article/details/120635064
Author: Debroon
Title: pandas 库前置知识

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/741544/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球