Pandas数据清洗

1、处理缺失数据

import pandas as pd
log_data = pd.read_csv('log.csv')
log_data
# 判断数据缺失
print(log_data.isnull())
print(log_data['paused'].isnull())
# 取出volume不为空的数据
print(log_data[log_data['volume'].notnull()])
log_data.set_index(['time', 'user'], inplace=True)
log_data.sort_index(inplace=True)
print(log_data)
print(log_data.fillna(0))
print(log_data.dropna())
print(log_data.ffill())
print(log_data.bfill())

2、数据变形

# 处理重复数据
data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
                     'k2': [1, 1, 2, 3, 3, 4, 4]})
print(data)
判断数据是否重复
data.duplicated()
#去除重复数据
data.drop_duplicates()
data['v1'] = range(7)
print(data)
#去除指定列的重复数据
data.drop_duplicates(['k1'])
data.drop_duplicates(['k1', 'k2'], keep='last')

# 使用函数或map转化数据
data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon', 'Pastrami', 'corned beef', 'Bacon', 'pastrami', 'honey ham', 'nova lox'],
                     'ounces': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
print(data)
#添加一列,用于指定食物的来源
meat_to_animal = {
    'bacon': 'pig',
    'pulled pork': 'pig',
    'pastrami': 'cow',
    'corned beef': 'cow',
    'honey ham': 'pig',
    'nova lox': 'salmon'
}

# 使用 map()
lowercased = data['food'].str.lower()
data['animal'] = lowercased.map(meat_to_animal)
print(data)
#使用方法
data['animal2'] = data['food'].map(lambda x: meat_to_animal[x.lower()])
print(data)

# 替换值
data = pd.Series([1., -999., 2., -999., -1000., 3.])
print(data)
import numpy as np
#将-999替换为空值
data.replace(-999, np.nan)
#将-999,-1000都替换为空值
data.replace([-999, -1000], np.nan)
#将-999,-1000分别替换为空值和0
data.replace([-999, -1000], [np.nan, 0])
data.replace({-999: np.nan, -1000: 0})

3、离散化和分箱操作

# 年龄数据
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
# 分箱的边界
bins = [18, 25, 35, 60, 100]
cats = pd.cut(ages, bins)
print(type(cats))
# Categorical对象
print(cats)
# 获取分箱编码
print(cats.codes)
# 返回分箱边界索引
print(cats.categories)
#统计箱中元素的个数
pd.value_counts(cats)
# 带标签的分箱
group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
cats = pd.cut(ages, bins, labels=group_names)
print(cats.get_values())

# 哑变量操作
df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'], 
                   'data1': range(6)})
print(df)
pd.get_dummies(df['key'])

# 向量化字符串操作
data = {'Dave': 'dave@google.com', 'Steve': 'steve@gmail.com', 'Rob': 'rob@gmail.com', 'Wes': np.nan}
data = pd.Series(data)
print(data)
print(data.str.contains('gmail'))
print(data.str[:5])
split_df = data.str.split('@', expand=True)
print(split_df)
split_df[0].str.cat(split_df[1], sep='@')
print(split_df)
Pandas是一个强大的数据处理和分析工具,它提供了丰富的功能来进行数据清洗。下面是一些常用的数据清洗操作: 1. 数据导入:使用Pandas可以方便地从各种数据源导入数据,如CSV文件、Excel文件、数据库等。 2. 缺失值处理:使用Pandas可以很方便地处理数据中的缺失值。可以使用`isnull()`函数检测缺失值,使用`fillna()`函数填充缺失值,或者使用`dropna()`函数删除包含缺失值的行或列。 3. 重复值处理:使用Pandas可以轻松地检测和删除数据中的重复值。可以使用`duplicated()`函数检测重复值,使用`drop_duplicates()`函数删除重复值。 4. 数据类型转换:Pandas可以将数据转换为不同的数据类型,如字符串、日期时间等。可以使用`astype()`函数进行数据类型转换。 5. 数据排序:使用Pandas可以对数据进行排序。可以使用`sort_values()`函数按照指定的列进行排序,使用`sort_index()`函数按照索引进行排序。 6. 数据筛选:使用Pandas可以根据条件筛选数据。可以使用布尔索引、`query()`函数或者`loc[]`、`iloc[]`函数进行数据筛选。 7. 数据合并:Pandas提供了多种方法来合并数据,如`concat()`函数、`merge()`函数和`join()`函数。 8. 数据分组和聚合:使用Pandas可以对数据进行分组和聚合操作。可以使用`groupby()`函数进行分组,然后使用聚合函数(如`sum()`、`mean()`、`count()`等)进行聚合计算。 9. 数据重塑:Pandas提供了多种方法来重塑数据的形状,如`pivot()`函数、`melt()`函数和`stack()`函数。 以上是一些常用的Pandas数据清洗操作,当然还有很多其他功能和方法可以用于数据清洗。如果你有具体的问题或者需要更详细的介绍,请告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值