Python数据分析入门

基础知识

数据的分类

  • 数值型数据

    • 表示大小或多少的数据

    • 例子:年龄、年购买量

    • 数值型数据分析方法

      • 最小值和最大值:查看这两个值的目的是为了能够确定一组数据的上界和下界。
      • **平均值:**平均值可以反映一组数据的综合水平。
      • **中位数:**中位数和平均数一样都是用来反映整体数据综合水平的指标。
  • 分类型数据

    • 可以用标记或名称来识别项目的类型的数据

    • 例子:用户id、性别、行业、岗位、购买原因

    • 分类型数据分析方法

      • 频率分布:频率分布反映的是一组数据中各个类别出现的次数占总数据的百分比,公式为 频数/总数据数

统计图

  • 饼图

    • 主要用于展示不同类别在整体中所占比重
    • 在饼图中,整个圆饼代表数据的总量,各扇形区域表示各分类数据的占比,所有面积加和等于100%,可以很好地帮助用户了解整体的构成情况
    • 饼图通常是展现分类型数据频率分布的最佳选择
    • 缺点:不适用于多分类数据
  • 条形图

    • 是一种用来描绘分类型数据频数或频率分布的可视化图表
    • 条形图使用一个单位长度表示一定长度的数量,根据数量的大小画成长短不同的直条。相较于饼图,条形图的优势体现在数据间的差异更直观。因为肉眼对高度差异更敏感
    • 缺点:数据占比的展示不如饼图直观
    • 对于频率分布的数据可视化,我们一般会优先使用饼图。但如果数据分类过多,我们可以选择条形图
  • 直方图

    • 直方图可以用来描绘数值型数据频数分布或频率分布的图表
    • 针对数值型数据,直方图往往会比条形图有更好的可视化效果
    • 直方图和条形图之间,最明显的区别就是,直方图的 “柱” 之间,是没有空隙的,而条形图的 “柱” 之间会有空隙。直方图的 “柱” 之间之所以没有空隙,因为数值型数据是连续的,没有空隙恰好能体现出其连续性
  • 折线图

    • 折线图一般是用来针对数值型数据进行分析的
    • 折线图往往可以反映数值型数据的变化趋势

数据清洗

  • 当数据同时存在缺失值重复值以及异常值的问题时,这份数据属于脏数据,需要进行数据清洗。

    • 在实际的数据分析项目中,经常会遇见数据统计不完整的情况,我们一般将那些缺失的数据称为缺失值
    • 重复值指的是表格中重复出现的数据。在多数情况中,重复值都是完全相同的数据
    • 有时数据中有一个或多个异常大或异常小的数值,超出了这份数据实际的限定范围,这样的数值被称为异常值
  • 清洗数据的步骤:

    • 处理缺失值
    • 处理重复值
    • 处理异常值

安装库

# 安装Pandas库
pip3 install pandas

# 安装matplotlib库
pip3 install matplotlib

Series对象与DataFrame对象

Series对象

# 一组数据+索引
import pandas as pd

data = pd.Series(['赵','钱','孙','李'])
print(data)
# 输出
0    赵
1    钱
2    孙
3    李
dtype: object

DataFrame对象

# 一组数据+行索引+列索引
import pandas as pd

data = pd.DataFrame({
   '年龄':[22,23,21],'专业':['计算机','数学','物理']})
print(data)

# 输出
  年龄   专业
0  22  计算机
1  23   数学
2  21   物理

两者区别与联系

  • 区别:索引不同
  • 联系: DataFrame 对象可以被看作有 Series 对象构成

读取文件

import pandas as pd

my_data = pd.read_csv(
    './data.csv',      # 文件路径
    encoding = 'utf-8'  # 编码格式
)

查看数据

显示头部数据

# 查看头部数据(默认为前5行)
my_data.head()

# 查看前10行数据
my_data.head(10)

显示尾部数据

# 查看尾部数据(默认为后5行)
my_data.tail()

# 查看前10行数据
my_data.tail(10)

显示数据基本信息

# 整体数据总共有多少行、总共有多少列、每一列的列名、所有非空数据的数据量等
my_data.info()
# 输出
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9994 entries, 0 to 9993
Data columns (total 7 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   用户ID    9994 non-null   object 
 1   性别      9994 non-null   object 
 2   年龄      9994 non-null   float64
 3   行业      9994 non-null   object 
 4   岗位      9994 non-null   object 
 5   购买原因    9994 non-null   object 
 6   年购买量    9994 non-null   float64
dtypes: float64(2), object(5)
memory usage: 546.7+ KB

查看某列数据

# 查看my_data数据中,'行业'这一列数据
my_data['行业']

查看某列数据的频数分布

# 查看'行业'这列数据的频数分布
my_data['行业'].value_counts()
# 输出
学生           3985
IT/通讯/互联网    2517
银行/证券/保险业    2002
其他            987
教育行业          311
新闻/出版行业       192
Name: 行业, dtype: int64

数值型数据分析方法

求和

# 最小值
my_data['年购买量'].sum()

最小值和最大值

# 最小值
my_data['年龄'].min()

# 最大值
my_data['年龄'].max()

平均值和中位数

# 平均值
my_data['年龄'].
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值