头歌机器学习---Pandas数值统计 Pandas数据清洗

第1关 Pandas数值统计 

因为seriesdataframe是两个不同的对象,所以它们有自己独特的方法。接下来让我们看一个series方法的例子—Series.value_counts()方法。此方法按顺序显示列中的每个非空值及其计数。

首先,我们将从f500dataframe中选择一个列:

 
  
  1. sectors = f500["sector"]
  2. print(type(sectors))

输出结果:

 
  
  1. class 'pandas.core.series.Series'

接下来,我们将把Series.value_counts()中的“Series”替换为sectors,如下所示:

 
  
  1. sectors_value_counts = sectors.value_counts()
  2. print(sectors_value_counts)

输出结果:

 
  
  1. Financials 118
  2. Energy 80
  3. Technology 44
  4. Motor Vehicles & Parts 34
  5. Wholesalers 28
  6. Health Care 27
  7. Food & Drug Stores 20
  8. Transportation 19
  9. Telecommunications 18
  10. Retailing 17
  11. Food, Beverages & Tobacco 16
  12. Materials 16
  13. Industrials 15
  14. Aerospace & Defense 14
  15. Engineering & Construction 13
  16. Chemicals 7
  17. Media 3
  18. Hotels, Restaurants & Leisure 3
  19. Business Services 3
  20. Household Products 3
  21. Apparel 2
  22. Name: sector, dtype: int64

我们可以看到列中每个非空值及其计数。

让我们看看当我们尝试对dataframe使用Series.value_counts()方法时会发生什么。首先,我们将选择sectorindustry列来创建一个名为sectors_industriesdataframe

  sectors_industries = f500[["sector", "industry"]]

  print(type(sectors_industries))

输出结果:

  < class 'pandas.core.frame.DataFrame' >

然后,我们将尝试使用value_counts()方法:

  si_value_counts = sectors_industries.value_counts()

  print(si_value_counts)

因为value_counts()只是series的方法,所以我们得到以下错误: AttributeError: 'DataFrame' object has no attribute 'value_counts'

最终答案如下:

import pandas as pd
f500 = pd.read_csv('f500.csv',index_col=0)
f500.index.name = None
f500_sel = f500.iloc[[0,1,2,3,4,8]]


# 请在此添加代码
#********** Begin **********#
countries=f500_sel["country"]
country_counts=countries.value_counts()
print(countries)
print(country_counts)
#********** End **********#

第2关 Pandas数据清洗​​​​​

缺失值处理:

1、检查缺失值

Pandas提供了isnull()notnull()两个函数来检测数据中的NaN值。SeriesDataFrame对象都可以使用。

2、处理缺失值

Pandas中可以通过fillna()函数来用非空数据填充NA值,如果想排除缺少的值,可以使用dropna()函数。删除缺失值时,可以传入axis参数,axis=0时则整行被删除,反之则整列被删除。默认值为0

重复值处理:

检查重复值

Pandas中的duplicated()返回boolSeries序列表示该行是不是重复值。

异常值处理:

检测异常值

发现异常值的方法是对数据进行描述性统计。使用describe函数可以生成描述统计结果,然后观察异常值的存在。超出数据正常范围的值即为异常值。

异常值处理:

检测到了异常值,我们需要对其进行一定的处理。而一般异常值的处理方法可大致分为以下几种:

  • 直接将含有异常值的记录删除;
  • 将异常值视为缺失值,利用缺失值处理的方法进行处理;
  • 可用前后两个观测值的平均值修正该异常值;
  • 直接在具有异常值的数据集上进行数据挖掘。

是否要删除异常值可根据实际情况考虑。因为一些模型对异常值不很敏感,即使有异常值也不影响模型效果。


import pandas as pd

def clean():

 #********** Begin *********#
    
    fd1=pd.read_csv('step2/message.csv',header=0)
    fd2=fd1.dropna().drop_duplicates().reset_index()
    return fd2
 #********** End **********#

if __name__ == '__main__':
    print(clean())

你可能感兴趣的:(机器学习,python,pandas,数据分析)