100天精通Python(数据分析篇)——第53天:初始pandas模块

在这里插入图片描述

文章目录

  • 每篇前言
  • 一、初始pandas
    • 1. 什么是pandas?
    • 2. 为什么要学习pandas?
    • 3. pandas的优势
    • 4. 下载安装pandas
  • 二、Pandas的数据类型
    • 1. Series
    • 2. DataFrame
  • 三、书籍推荐

每篇前言

  • 作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6

  • 本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》
  • ​​此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
  • 订阅专栏后续可以阅读Python从入门到就业100篇文章还可私聊进两百人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
  • 加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!

在这里插入图片描述
在这里插入图片描述

一、初始pandas

1. 什么是pandas?

Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。Pandas 已经成为 Python 数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。提供了高级数据结构和数据操作工具,它是使Python成为强大而高效的数据分析环境的重要因素之一。

  • 一个强大的分析和操作大型结构化数据集所需的工具集

  • 基础是NumPy,提供了高性能矩阵的运算

  • 提供了大量能够快速便捷地处理数据的函数和方法

  • 应用于数据挖掘,数据分析

  • 提供数据清洗功能

2. 为什么要学习pandas?

Pandas是数据分析三剑客之一,是Python的核心数据分析库!

Pandas能够处理的数据类型

  • 与SQL或Excel表类似的数据
  • 有序或无序的时间序列数据
  • 带行列标签的矩阵数据
  • 任意其他形式的观测

3. pandas的优势

  • 处理浮点与非浮点数据里的缺失数据,表示为NaN大小可变
  • 自动、显示数据对齐
  • 强大、灵活的分组统计功能
  • 成熟的导入导出工具

4. 下载安装pandas

1. window电脑点击win键+ R,输入:cmd

在这里插入图片描述

2. 安装pandas,输入对应的pip命令pip install pandas,我已经安装过了出现版本就安装成功了

100天精通Python(数据分析篇)——第53天:初始pandas模块_第1张图片

3. 导包

import pandas as pd

注意:Python中看到pd那一定是对pandas导包的缩写!!!

二、Pandas的数据类型

Pandas有两个最主要也是最重要的数据结构: Series 和 DataFrame

  • Series:一维,带标签数组
  • DataFrame:二维,Series容器
import pandas as pd

1. Series

Series是一种类似于一维数组的 对象,由一组数据(各种NumPy数据类型)以及一组与之对应的索引(数据标签)组成。

  • 类似一维数组的对象
  • 由数据和索引组成
    • 索引(index)在左,数据(values)在右
    • 索引是自动创建的

100天精通Python(数据分析篇)——第53天:初始pandas模块_第2张图片

1)通过list构建Series

ser_obj = pd.Series(range(10))

>>> import pandas as pd

>>> # 通过list构建Series
>>> ser_obj = pd.Series(range(10, 20))
>>> print(ser_obj)
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64

>>> print(type(ser_obj))
<class 'pandas.core.series.Series'>

2)获取数据和索引:

ser_obj.indexser_obj.values

>>> # 获取数据
>>> print(ser_obj.values)
[10 11 12 13 14 15 16 17 18 19]

>>> # 获取索引
>>> print(ser_obj.index)
RangeIndex(start=0, stop=10, step=1)

3)通过索引获取数据:

ser_obj[idx]

>>> #通过索引获取数据
>>> print(ser_obj[0])
10
>>> print(ser_obj[8])
18

4)索引与数据的对应关系不被运算结果影响

>>> # 索引与数据的对应关系不被运算结果影响
>>> print(ser_obj * 2)
0    20
1    22
2    24
3    26
4    28
5    30
6    32
7    34
8    36
9    38
dtype: int64
>>> print(ser_obj > 15)
0    False
1    False
2    False
3    False
4    False
5    False
6     True
7     True
8     True
9     True
dtype: bool

5)通过dict构建Series:

ser_obj = pd.Series(python字典)

>>> # 通过dict构建Series
>>> year_data = {2001: 17.8, 2002: 20.1, 2003: 16.5}
>>> ser_obj2 = pd.Series(year_data)
>>> print(ser_obj2.head())
2001    17.8
2002    20.1
2003    16.5
dtype: float64
>>> print(ser_obj2.index)
Int64Index([2001, 2002, 2003], dtype='int64')

6)name属性

对象名:ser_obj.name
对象索引名:ser_obj.index.name


>>> # name属性
>>> ser_obj2.name = 'temp'
>>> ser_obj2.index.name = 'year'
>>> print(ser_obj2.head())
year
2001    17.8
2002    20.1
2003    16.5
Name: temp, dtype: float64

2. DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同类型的值。DataFrame既有行索引也有列索引,它可以被看做是由Series组成的字典(共用同一个索引),数据是以二维结构存放的。

  • 类似多维数组/表格数据 (如,excel, R中的data.frame)
  • 每列数据可以是不同的类型
  • 索引包括列索引和行索引

100天精通Python(数据分析篇)——第53天:初始pandas模块_第3张图片
DataFrame的基础属性:

属性 说明
df.shape 行数列数
df.dtypes 列数据类型
df.ndim 数据维度
df.index 行索引
df.columns 列索引
df.values 对象值,二维ndarray数组

DataFrame整体情况查询:

方法 说明
df.head(3) 显示头部几行,默认5行
df.tail(3) 显示末尾几行,默认5行
df.info() 相关信息概览:行数,列数,列索引,列非空值个数,列类型,列类型,内存占用
df.describe() 快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值

1)通过ndarray构建DataFrame

>>> import pandas as pd
>>> import numpy as np

>>> # 通过ndarray构建DataFrame
>>> array = np.random.randn(5,4)
>>> print(array)
[[-0.24162926  0.40680297  0.08596954 -0.76233872]
 [-0.76604456 -0.74271574 -0.82554252  2.35414819]
 [ 1.66400289  0.38210026 -0.83706262 -0.3219765 ]
 [ 0.04612424  0.49754558 -1.34472493 -0.41849572]
 [ 0.44190754  0.52152161 -0.99221172  2.08437141]]

>>> df_obj = pd.DataFrame(array)
>>> print(df_obj.head())
          0         1         2         3
0 -0.241629  0.406803  0.085970 -0.762339
1 -0.766045 -0.742716 -0.825543  2.354148
2  1.664003  0.382100 -0.837063 -0.321977
3  0.046124  0.497546 -1.344725 -0.418496
4  0.441908  0.521522 -0.992212  2.084371
>>> print(type(df_obj))
<class 'pandas.core.frame.DataFrame'>

100天精通Python(数据分析篇)——第53天:初始pandas模块_第4张图片DataFrame对象既有行索引,又有列索引

  • 行索引,表明不同行,横向索引,叫index,0轴,axis=0
  • 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

2)通过dict构建DataFrame

>>> # 通过dict构建DataFrame
>>> dict_data = {'A': 1,
...              'B': pd.Timestamp('20170426'),
...              'C': pd.Series(1, index=list(range(4)),dtype='float32'),
...              'D': np.array([3] * 4,dtype='int32'),
...              'E': ["Python","Java","C++","C"],
...              'F': 'ITCast' }

# 方式1
>>> df_obj2 = pd.DataFrame(dict_data)
>>> print(df_obj2)
   A          B    C  D       E       F
0  1 2017-04-26  1.0  3  Python  ITCast
1  1 2017-04-26  1.0  3    Java  ITCast
2  1 2017-04-26  1.0  3     C++  ITCast
3  1 2017-04-26  1.0  3       C  ITCast
>>> print(type(df_obj2))
<class 'pandas.core.frame.DataFrame'>

# 方式2
>>> list_data = [{"name": "小白", "age": 20, "tel": 10010}, {"name": "小红", "tel": 10010}, {"name": "小黑", "age": 10}]
>>> list_data
[{'name': '小白', 'age': 20, 'tel': 10010}, {'name': '小红', 'tel': 10010}, {'name': '小黑', 'age': 10}]

>>> df_obj3 = pd.DataFrame(list_data)
>>> print(df_obj3)
  name   age      tel
0   小白  20.0  10010.0
1   小红   NaN  10010.0
2   小黑  10.0      NaN
# 可以看出空值用NaN占位了

3)通过Series对象创建DataFrame

>>> import pandas as pd
>>> ser_obj = pd.Series(range(10, 20))
>>> print(ser_obj)
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> pd = pd.DataFrame(ser_obj)
>>> pd
    0
0  10
1  11
2  12
3  13
4  14
5  15
6  16
7  17
8  18
9  19

4)通过列索引获取列数据(Series类型)

df_obj[col_idx]df_obj.col_idx


>>> # 通过列索引获取列数据
>>> print(df_obj2['A'])
0    1
1    1
2    1
3    1
Name: A, dtype: int64
>>> print(type(df_obj2['A']))
<class 'pandas.core.series.Series'>

>>> print(df_obj2.A)
0    1
1    1
2    1
3    1
Name: A, dtype: int64

5)增加列数据

df_obj[new_col_idx] = data; 类似Python的 dict添加key-value


>>> # 增加列
>>> df_obj2['G'] = df_obj2['D'] + 4
>>> print(df_obj2.head())
   A          B    C  D       E       F  G
0  1 2017-04-26  1.0  3  Python  ITCast  7
1  1 2017-04-26  1.0  3    Java  ITCast  7
2  1 2017-04-26  1.0  3     C++  ITCast  7
3  1 2017-04-26  1.0  3       C  ITCast  7

6)删除列

del(df_obj[col_idx])


>>> # 删除列
>>> del(df_obj2['G'] )
>>> print(df_obj2.head())
   A          B    C  D       E       F
0  1 2017-04-26  1.0  3  Python  ITCast
1  1 2017-04-26  1.0  3    Java  ITCast
2  1 2017-04-26  1.0  3     C++  ITCast
3  1 2017-04-26  1.0  3       C  ITCast

三、书籍推荐

书籍展示:《人工智能技术基础》

100天精通Python(数据分析篇)——第53天:初始pandas模块_第5张图片


【书籍内容简介】

  • 本书不但侧重于理论知识的普及,也将技术融合于Python模块进行实验上的操作与演示。本书主要内容包括:人工智能技术概述,人脸识别技术、物体识别技术,视频识别技术、语音识别技术、文本识别技术,区块链技术等。全书综合了各种模块对人工智能技术的实践,将分散的技术点统一起来,并把抽象的原理与适应读者思维的案例相融合,实现知识点的充分理解。
    本书适合从事数据科学及AI的读者阅读。
  • 京东自营:https://item.jd.com/13187173.html

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