Python数据分析与可视化(数据分析)

数据分析。(全套教程文末领取哈)

数据统计与计算

本节讨论使用Pandas来对数据进行处理和分析,主要包括以下内容

  • 获取数据的统计信息
  • 显示数据类型
  • 转换数据类型
  • 去除数据的重复值
  • 对数据进行分组
  • 寻找数据间的关系
  • 计算百分比
    在上一节“数据读取”中,我们用到了Pandas。现在我们将更深入了解Pandas在处理数据方面的应用。
    首先先复习一下上节课中用Pandas读取CSV文件的代码:
import pandas as pd

# 创建列名列表
names = ['age', 'workclass', 'fnlwgt', 'education', 'educationnum', 'maritalstatus', 'occupation', 'relationship', 'race',
        'sex', 'capitalgain', 'capitalloss', 'hoursperweek', 'nativecountry', 'label']
# 利用定义好的列名来读取数据
df = pd.read_csv("data/adult.data", header=None, names=names)
                      
print(df.head())

获取数据的统计信息
首先我们使用Pandas的函数来查看数据,以更好地了解数据可能存在的问题。Describe()函数将为我们提供计数和一些连续变量的统计信息。

import pandas as pd
names = ['age', 'workclass', 'fnlwgt', 'education', 'educationnum', 'maritalstatus', 'occupation', 'relationship', 'race',
        'sex', 'capitalgain', 'capitalloss', 'hoursperweek', 'nativecountry', 'label']
train_df = pd.read_csv("adult.data", header=None, names=names)
print(train_df.describe())

img

在得到的结果中,有mean,std,min,max,和一些不同百分比。
注意:请记住,异常值比中值对平均值的影响更大。另外,我们可以对标准差进行平方以获得方差。
我们可以发现结果中并没有包含所有列,那是因为describe()函数只对数值型的列进行统计。

显示数据类型
我们可以用info()函数来查看数据的类型

import pandas as pd

# 读取数据
names = ['age', 'workclass', 'fnlwgt', 'education', 'educationnum', 'maritalstatus', 'occupation', 'relationship', 'race',
        'sex', 'capitalgain', 'capitalloss', 'hoursperweek', 'nativecountry', 'label']
train_df = pd.read_csv("adult.data", header=None, names=names)
                      
print(train_df.info())  # 使用inf()函数

img

结果如图所示,在dataframe中有两种数据类型object和int64。我们可以把object类型当作字符串类型,把int64当作正数类型。
转换数据类型
如果说某一列数据的类型错误,我们可以用下面的函数进行转换:

  • to_numeric()
  • to_datetime()
  • to_string()

例如:

df['numeric_column'] = pd.to_numeric(df['string_column'])

我们还可以从i上面使用info()函数获取的结果中查看每列非空值的计数以及数据的内存使用情况。

去除数据的重复值
另一个有用的步骤是查看列的都有哪些不重复的值。这是relationship列的示例:

import pandas as pd
names = ['age', 'workclass', 'fnlwgt', 'education', 'educationnum', 'maritalstatus', 'occupation', 'relationship', 'race',
        'sex', 'capitalgain', 'capitalloss', 'hoursperweek', 'nativecountry', 'label']
train_df = pd.read_csv("adult.data", header=None, names=names)
print(train_df['relationship'].unique())

输出:

[' Not-in-family' ' Husband' ' Wife' ' Own-child' ' Unmarried'
 ' Other-relative']

上面显示了relationship列都有哪些取值,并且我们可以统计每个值出现的次数:

import pandas as pd
names = ['age', 'workclass', 'fnlwgt', 'education', 'educationnum', 'maritalstatus', 'occupation', 'relationship', 'race',
        'sex', 'capitalgain', 'capitalloss', 'hoursperweek', 'nativecountry', 'label']
train_df = pd.read_csv("adult.data", header=None, names=names)
print(train_df
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值