人工智能学习2(python数据清洗)

编译工具:PyCharm

一.数据清洗

转化数据类型、处理重复数据、处理缺失数据

import pandas as pd

df = pd.read_csv("/data.csv")
df.sample(10)  # 用于随机获取数据并返回结果
df.head(10)  # 查看前十条数据
df.tail(10)  # 查看后十条数据
df.shape  # 查看表格行列数
df.describe()  # 查看数据的统计信息
df.dtypes  # 查看每一列特征的数据类型

1.转换数据类型

pandas可以产生两种类型表格,DataFrame产生多行多列;Series产生多行单列的表格

# 转换数据类型
# pandas可以产生两种类型表格,DataFrame产生多行多列;Series产生多行单列的表格
import pandas as pd

df = pd.DataFrame([{'col1': 'a', 'col2': '1'}, {'col1': 'b', 'col2': '2'}])
print(df.dtypes)
print(df)
# 将该列的数据类型转化为int类型
df['new_col'] = df['col2'].astype(int)
print(df)
print(df.dtypes)

print("---------Series创建多行单列表格--------")
# 多行单列表格
s = pd.Series(['1', '2', '4.7', 'pandas', '10'])
# 转化的时候忽略非法字符,缺点:忽略了但是数据依然存在,数据分析的时候会有问题
print(s.astype(float, errors='ignore'))
# 使用pd.to_numeric
print(pd.to_numeric(s, errors='coerce'))
print(s)

人工智能学习2(python数据清洗)_第1张图片
人工智能学习2(python数据清洗)_第2张图片

转换数据类型小练习

print("--------------------------------------------")
# 小练习:将下面的数据转成float类型,并且去掉'$'以及','
print("-----练习1: 下面的数据转成float类型,并且去掉'$'以及','-----")
df1 = pd.DataFrame([{'2016':'$125,000.00','2017':'162500.00'},
                    {'2016':'$920,000.00','2017':'101,2000.00'},
                    {'2016':'$50,000.00','2017':'62500.00'},
                    {'2016':'$350,000.00','2017':'490000.00'}])
print(df1)
# 定义函数
def convert_money(value):
    new_value=value.replace("$","").replace(",","")
    return float(new_value)
# 将'2016'这一列作为参数使用convert_money函数
print("------清洗2016的结果------")
print(df1['2016'].apply(convert_money))


# 匿名函数清洗增长率
print("-----练习2: 匿名函数清洗增长率-----")
df2 = pd.Series(['30.00%','20.00%','10.00%','16.77%'])
print(df2)
print(df2.apply(lambda x: float(x.replace("%","")) / 100 ))


# 将数据转换为浮点数类型
print("-----练习3: 数据转换为浮点数类型-----")
df3 = pd.Series(['500','700','125','175','Closed'])
# 注意是pandas.to_numeric而不是df3.to_numeric
print(pd.to_numeric(df3, errors='coerce'))


# 将原本数据用1或者0表示
print("-----练习4: 将原本数据用1或者0表示-----")
df4 = pd.Series(['Y','Y','Y','N','N'])
# 需要引入numpy库内含许多数据运算函数
import numpy
print(numpy.where(df4 == 'Y', 1, 0))


# 将Month、Day、Year三个特征的数据合并为一个日期类型的特征
print("-----练习5: 将Month、Day、Year三个特征的数据合并为一个日期类型的特征-----")
df5 = pd.DataFrame([{'Year':2015,'Month': 1,'Day':10},
                    {'Year':2014,'Month': 6,'Day':15},
                    {'Year':2016,'Month': 3,'Day':29},
                    {'Year':2015,'Month': 10,'Day':27}])
print("     原始数据:")
print(df5)
# 使用pandas库中自带的to_datetime
print("     合并后数据:")
print(pd.to_datetime(df5[['Month', 'Day', 'Year']]))

相应的运行结果如下:
人工智能学习2(python数据清洗)_第3张图片
人工智能学习2(python数据清洗)_第4张图片

你可能感兴趣的:(人工智能,python作业,人工智能,学习,python)