用Pyjanitor消除数据清洗(Data Cleaning)中的烦恼

大数据 数据分析
数据清洗(Data Cleaning)通常被视为数据驱动决策的关键准备步骤,其目的在于查找并纠正数据中的错误和不一致,以提高数据质量。随着数据集的增长,确保数据的清洁度和完整性变得越发具有挑战性。了解数据清洗的重要性以及如何进行数据清洗变得至关重要。

从数据分析到EDA(探索性数据分析/exploratory data analysis)再到机器学习模型,数据集的质量和完整性都是确保分析和建模过程有效的关键因素。高质量、完整的数据集能够提供更可靠、更准确的分析结果,有助于制定基于数据的决策。

数据清洗(Data Cleaning)通常被视为数据驱动决策的关键准备步骤,其目的在于查找并纠正数据中的错误和不一致,以提高数据质量。随着数据集的增长,确保数据的清洁度和完整性变得越发具有挑战性。了解数据清洗的重要性以及如何进行数据清洗变得至关重要。

关于数据清洗的重要性参见《一文带您了解数据清洗的重要:数据驱动决策的关键步骤》或参考《数据科学/机器学习项目中处理缺失值:策略与实践》

今天我们将介绍并示范一款优秀的数据清洗工具包,能够加速并简化数据清洗的过程:pyjanitor。

pyjanitor 是什么?

Pyjanitor是一个功能强大的Python库,旨在简化数据清洗的过程。作为流行的Pandas库的扩展,Pyjanitor为数据科学家和分析师提供了额外的功能,使数据清洗变得更加高效和便捷。该库不仅易于使用,而且高度可定制,可以满足各种数据清洗任务的需求。通过Pyjanitor,用户可以轻松添加和删除列,重命名列,处理缺失值,过滤数据,进行数据分组,数据重塑,以及处理字符串和文本数据等。这些功能使Pyjanitor成为处理数据预处理挑战的理想选择,无论是在数据科学项目中还是日常数据分析任务中。

Pyjanitor的一些关键特性包括:

  • 添加和删除列
  • 重命名列
  • 处理缺失值
  • 数据过滤
  • 数据分组
  • 数据重塑
  • 处理字符串和文本数据

使用Pyjanitor进行数据清洗的一些关键优势包括:

  • 简化了数据清洗的流程
  • 节省时间和精力
  • 提供了丰富的数据清洗和准备功能
  • 高度可定制和灵活
  • 与Pandas和其他流行的Python库兼容

安装pyjanitor

pipinstall pyjanitor

pyjanitor简单示例

import pandas as pd
import janitor


# Read the dataset
df = pd.read_csv('heart_disease_uci.csv')


# Clean the column names
df = df.clean_names()
# Droping the unnecessary columns
df = df.remove_columns(['ca', 'thal'])


# Convert the trestbps to a float
df['trestbps'] = df['trestbps'].astype(float)


# Sort the dataframe by the trestbps column in descending order
df = df.sort_values(by='trestbps', ascending=False)


# Save the cleaned dataframe to a new CSV file
df.to_csv('cleaned_heart_disease_uci.csv', index=False)

在这个示例中,首先导入了必要的库,包括Pyjanitor。然后使用Pandas的read_csv函数读取数据集。接着,使用Pyjanitor的clean_names函数来标准化列名。然后使用remove_columns函数删除任何不必要的列。使用astype方法将工资列转换为浮点数。最后,使用sort_values方法按照工资列的降序对数据框进行排序,并使用to_csv方法将清理后的数据框保存到新的CSV文件中。

API 方式

有三种使用API的方法。第一种,也是最强烈推荐的方法,是将pyjanitor的函数用作Pandas的本地函数。

import pandas as pd
import numpy as np
company_sales = {
    'SalesMonth': ['Jan', 'Feb', 'Mar', 'April'],
    'Company1': [150.0, 200.0, 300.0, 400.0],
    'Company2': [180.0, 250.0, np.nan, 500.0],
    'Company3': [400.0, 500.0, 600.0, 675.0]
}
import janitor  # upon import, functions are registered as part of pandas.


# This cleans the column names as well as removes any duplicate rows
df = pd.DataFrame.from_dict(company_sales).clean_names().remove_empty()
df

第二种方法是函数式API。

import pandas as pd
import numpy as np
company_sales = {
    'SalesMonth': ['Jan', 'Feb', 'Mar', 'April'],
    'Company1': [150.0, 200.0, 300.0, 400.0],
    'Company2': [180.0, 250.0, np.nan, 500.0],
    'Company3': [400.0, 500.0, 600.0, 675.0]
}
from janitor import clean_names, remove_empty
df = pd.DataFrame.from_dict(company_sales)
df = clean_names(df)
df = remove_empty(df)
df

最后一种方法是使用pipe()方法:

import pandas as pd
import numpy as np
company_sales = {
    'SalesMonth': ['Jan', 'Feb', 'Mar', 'April'],
    'Company1': [150.0, 200.0, 300.0, 400.0],
    'Company2': [180.0, 250.0, np.nan, 500.0],
    'Company3': [400.0, 500.0, 600.0, 675.0]
}
from janitor import clean_names, remove_empty
df = (
    pd.DataFrame.from_dict(company_sales)
    .pipe(clean_names)
    .pipe(remove_empty)
)
df

填充的函数示例:fill_direction(df, **kwargs)

提供一个可链式调用的方法,用于填充所选列中的缺失值。

它是pd.Series.ffill和pd.Series.bfill的包装器,并将列名与up、down、updown和downup中的一个配对使用。

import pandas as pd
import janitor as jn
df = pd.DataFrame(
   {
       'col1': [1, 2, 3, 4],
       'col2': [None, 5, 6, 7],
       'col3': [8, 9, 10, None],
       'col4': [None, None, 11, None],
       'col5': [None, 12, 13, None]
   }
)
print(df)


df1=df.fill_direction(
col2 = 'up',
col3 = 'down',
col4 = 'downup',
col5 = 'updown'
)
print(df1)

添加新功能(functionality)

需要定义一个函数,该函数表达了数据处理/清理的流程。该函数应接受一个DataFrame作为第一个参数,并返回一个修改过的DataFrame。

import pandas_flavor as pf


@pf.register_dataframe_method
def my_data_cleaning_function(df, arg1, arg2, ...):
    # Put data processing function here.
    return df

Pyjanitor 提供了简化和自动化数据清洗过程的解决方案,旨在使数据清洗更快速、更高效。作为一个功能强大且多功能的包,Pyjanitor 的集成可以帮助您节省时间,让您将更多精力投入到数据分析和解释上。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2010-09-30 13:17:41

2023-10-10 10:12:06

2020-03-24 11:25:19

智能虚拟化数据湖数据

2015-01-13 09:38:20

大数据数据孤岛

2017-12-14 12:10:55

数据中心热点IT

2013-03-20 16:23:53

数据清洗

2016-04-01 11:12:26

企业IT数据孤岛商业智能

2015-09-11 15:58:11

数据中心管理系统

2024-03-25 10:15:58

AI数据

2013-07-09 17:14:49

华为eLTE方案华为eLTE华为

2013-03-27 13:34:49

数据清洗

2016-12-12 18:45:08

Data Mining大数据

2013-07-09 17:31:00

mySQLOracle

2013-03-20 15:49:28

大数据

2021-07-27 15:40:39

Python数据清洗函数

2019-02-28 22:42:28

大数据烦恼何宝宏

2013-03-27 11:09:26

数据清洗

2024-01-29 18:06:39

SQL数据格式

2018-01-26 13:28:48

数据库数据重复数据库清理

2016-12-08 09:30:00

图片数据库网络爬取数据清洗
点赞
收藏

51CTO技术栈公众号