NumPy和Pandas都是Python的第三方库,但是它们的应用场景不同。NumPy主要用于处理数值数据,提供了ndarray数组来容纳数据,支持并行计算,底层使用C语言编写,效率高。Pandas主要用于处理类表格数据,提供了Series和DataFrame数据结构,能够处理不同类型的数据,支持数字索引和标签索引,是专门为处理表格和混杂数据设计的。NumPy适合处理统一的数组数据,而Pandas更适合处理结构化数据。总之,Numpy与Pandas库是数据分析的两大利器。

 一、Python常见数据类型

Number(数字)String(字符串)bool(布尔类型)List(列表)Tuple(元组)Set(集合)Dictionary(字典)

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

此外还有一些高级的数据类型,如: 字节数组类型(bytes)。

1. Number(数字)

        数字类型包括:int(整型)

                                 float(浮点)

                                 bool(布尔)

                                 complex(复数)

内置的 type() 函数以及 isinstance()函数可以用来查询变量所指的对象类型,两者的区别为:

type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。

注意:

        Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。

1、Python可以同时为多个变量赋值,如a, b = 1, 2。2、一个变量可以通过赋值指向不同类型的对象。3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。4、在混合计算时,Python会把整型转换成为浮点数。

2. String(字符串)

        Python字符串是用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。

字符串的截取的语法格式如下:

变量[头下标:尾下标]

索引值以 0 为开始值,-1 为从末尾的开始位置。左闭右开

                索引截取:str[ 1 ]  、 str[ 1:1 ]

                加号连接:str + 'A'

                星号复制:str * 2

反斜杠转义:不想转义可以在字符串前面添加一个 r

>>> print('xia\nb')

xia

b

>>> print(r'xia\nb')

xia\nb

注意:

1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。2、字符串可以用+运算符连接在一起,用*运算符重复。3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。4、Python中的字符串不能改变。

3. bool(布尔类型)

布尔类型即 True 或 False。在 Python 中,True 和 False 都是关键字,表示布尔值。常用于控制程序的流程,如判断某个条件是否成立等。

注意:

布尔类型只有两个值:True 和 False。 布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将 True 视为 1,False 视为 0。 布尔类型可以和逻辑运算符一起使用,包括 and、or 和 not。这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值。 布尔类型也可以被转换成其他数据类型,比如整数、浮点数和字符串。在转换时,True 会被转换成 1,False 会被转换成 0。 在 Python 中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False。因此,在进行布尔类型转换时,需要注意数据类型的真假性。

4. List(列表)

List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表,如[ 1, 2, 3]等。和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表截取:索引值以 0 为开始值,-1 为从末尾的开始位置

                 索引截取:list[ 1 ]  、 list[ 1:1 ] 、list[ 1: 6: 2] (其中第三个数字表示步长,为2)

                加号连接:list1 + list2

                星号复制:list * 2

注意:

1、List写在方括号之间,元素用逗号隔开。2、和字符串一样,list可以被索引和切片。3、List可以使用+操作符进行拼接。4、List中的元素是可以改变的。5、List内置了有很多方法,例如 append()、pop() 等等。

5. Tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。元组中的元素类型也可以不相同。元组与字符串、列表类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(如列表,不再赘述)。

注意:

1、与字符串一样,元组的元素不能修改,字符串可看作一种特殊的元组。2、元组也像字符串、列表一样可以被索引和切片,方法一样。3、注意构造包含 0 或 1 个元素的元组的特殊语法规则:                                                         tup1 = ()  # 空元组;                                                                                                         tup2 = (20,)   # 一个元素,需要在元素后添加逗号。4、虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表,([1,2,3], 'xgf')。5、元组也可以使用+操作符进行拼接。6、string、list 和 tuple 都属于 sequence(序列)

6. Set(集合)

集合(Set)是一种无序、可变的数据类型,用于存储唯一的元素,即元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。集合使用大括号 { } 表示,元素之间用逗号 , 分隔。另外,也可以使用 set() 函数创建集合,但空集合必须用set()函数来创建,{ }是用来创建一个空字典。

#集合创建

>>>a = set('abcxxgcf')

{'a','b','c','x','g','f'}

>>>b = {'x','g','f'}

{'x','g','f'}

>>>c = set()

{}

7. Dictionary(字典)

字典(dictionary)是Python中另一个非常有用的内置数据类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键值对来存取的,而不是通过偏移存取。字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。其中键(key)必须使用不可变类型,也就是说List(列表)做不了键(key)。在同一个字典中,键(key)必须是唯一的,值(value)可相同。另外,字典类型也有一些内置的函数,例如 clear()、keys()、values() 等。

>>>dict= {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}

>>>dict.keys()

dict_keys(['name', 'code', 'site'])

>>>dict.values()

dict_values(['runoob', 1, 'www.runoob.com'])

注意:

1、字典是一种映射类型,它的元素是键值对。2、字典的关键字必须为不可变类型,且不能重复。3、创建空字典使用 { }4、字典类型也有一些内置的函数,例如 clear()、keys()、values() 等,dict.keys()、dict.values()。

二、创建Numpy ndarray

       Numpy是Python家族中数值计算、科学计算的基础,是很多使用工具包实现的基础。Numpy提供向量与矩阵运算有助于优化量化分析算法性能。NumPy主要用于处理数值数据,提供了ndarray数组来容纳数据,支持并行计算,底层使用C语言编写,效率高。NumPy适合处理统一的数组数据,而Pandas更适合处理结构化数据。Numpy最重要的一个特点是N维数组对象 - ndarray维数在Numpy中成为秩(rank),如:

一维数组,rank = 1二维数组,rank = 2

在Python中,每一个线性的数组称为一个轴(axes),rank就是描述轴的数量。

创建ndarray有两种方式:

使用普通的array列表使用Numpy的内置函数

1. 使用array创建数组

注:ndarray中所有的元素必须是相同类型,最好不要有非数字的字符串。

数组的属性:

shape:获取数组大小的元组 (行,列),如果是一维数组,则只显示(行,)dtype:获取元素数据类型的对象size: 获取元素数量

2. 使用Numpy的内置函数创建数组

(1) arange 或 linspace创建连续数组。

(2) zeros,ones,  full 方法创建数组

(3) eye方法创建单位矩阵。

注: 单位矩阵:方形矩阵,且对角线的值均为1,其他位置的值为0。

(4) diag创建对角矩阵

(5) random创建随机数组

numpy.random函数简介:

        seed: 确定随机数生成的种子

        permutation:返回一个序列的随机排列或返回一个随机排列的范围

        shuffle: 对一个序列就地随机排序

        rand: 产生均匀分布的样本值

        randint: 从给定的上下限范围内随机选取整数

        randn: 产生正太分布(平均值为0,标准差为1)的样本值

        binomial: 产生二项分布的样本值

        normal:产生正态(高斯)分布的样本值

        beta: 产生Beta分布的样本值

关于Python常见random随机函数详解 请见:Python常用random随机函数详解汇总

(6) reshape创建多维数组

三、创建Pandas Series

        Pandas主要用于处理类表格数据,提供了Series和DataFrame数据结构,能够处理不同类型的数据,支持数字索引和标签索引,是专门为处理表格和混杂数据设计的。

创建Series有三种方式:

通过列表创建通过数组创建通过字典创建

1. 通过列表创建

import pandas as pd

import numpy as np

# 定义一个列表

List = [1,2,3,4]

S = pd.Series(List)

S

第一列为索引,是Series在创建时默认生成的,第二列为值,通过type(S)命令即可看到S的数据类型为:pandas.core.series.Series,我们也可以自定义索引:

S=pd.Series(List,index=['a','b','c','d'])

S

重新设置我们的索引,这样原先的索引就从0,1,2,3变为了a,b,c,d。

查看索引和值可以分别通过访问Series的index属性和values属性:

2. 通过数组创建

这里的数组指的是numpy中的数组,它是对python列表的深度封装。

#定义数组

arr=np.arange(1,5)

S = pd.Series(arr)

S

3. 通过字典创建

关于Series,它更像一个有序的大字典,键值对就相当于索引和值,因此我们用操作字典的习惯操作Series往往能得心应手。我们来看如何通过字典创建一个Series:

# 创建一个字典

dic = {"name": "xgf",

"age": 25,

"grade": [100, 90, 80]}

S = pd.Series(dic)

S

这里我们已经成功创建了一个存放学生信息的Series,由于字典自带key,因此索引也就自然创建了。如果我们希望age放在第一列,应该怎么设置呢?通过设置索引:

S = pd.Series(dic, index=["age", "name", "grade"])

S

此时,index参数的功能不再是设置索引,而是根据索引排序,因为字典本身自带索引。

给S新增一个索引sex:

S = pd.Series(dic, index=["age", "name", "grade",'sex'])

S

可以看到,因为这位同学的性别未知,创建的Series中,sex这一栏就只能填NaN了,跟字典的操作一样,通过赋值,即可确定性别:

S['sex']='男'

S

像操作字典一样,我们往Series里插入一条索引与数据(键值对):

S['hobby']=['basketball,game,sing']

S

四、创建Pandas DataFrame

创建DataFrame有三种方式:

创建空的数据框架手工创建通过列表(list)创建通过字典(dict)创建通过读取.xlsx/.csv等文件创建

1. 创建空的数据框架

pd.DataFrame(columns=['A', 'B', 'C'], index=[0,1,2])

columns参数用来定义列名,index参数用来定义行号。上面的代码创建了一个3行3列的二维数据表:

2. 手工创建Pandas DataFrame

定义数据data、索引index、列名columns:

df = pd.DataFrame(data=['Apple','Banana','Cherry','Dates','Eggfruit'],

index = [1,2,3,4,5],

columns=['Fruits'])

往DataFrame里添加一列Quantity来表示水果数量:

df = pd.DataFrame(data=[['Apple',5],

['Banana',10],

['Cherry',8],

['Dates',3],

['Eggfruit',7]],

columns = ['Fruits','Quantity'],

index=[1,2,3,4,5])

注意:data参数和colums参数都进行了相应的调整。

 3. 通过列表(list)创建

一维、二维列表创建df1、df2:

#一维列表列表:

fruits_list1 = ['Apple','Banana','Cherry','Dates','Eggfruit']

#二维列表列表:

fruits_list2 = [['Apple',5],

['Banana',10],

['Cherry',8],

['Dates',3],

['Eggfruit',7]]

df1 = pd.DataFrame(fruits_list1,

columns = ['Fruits'],

index = ['a','b','c','d','e'])

df2 = pd.DataFrame(fruits_list2,

columns=['Fruits','Quantity'],

index = ['f','g','h','i','j']

dtype=float) #整型转浮点型

 

4. 通过字典(dict)创建

 字典就是一组键/值对,键对应成为DataFrame的列字段,而所有的值对应数据。 记住这个对应关系。

dict = {key1 : value1, key2 : value2, key3 : value3}

当我们将上述字典对象转换为DataFrame:

dict={'key1':'value1',

'key2':'value2',

'key3':'value3'

}

df = pd.DataFrame(dict,index=[0])

df

 注意:

        df = pd.DataFrame(dict,index=[0]) ,直接传入标称属性为value的字典需要设置index,否则则会报错。具体可参考 ValueError: If using all scalar values, you must pass an index

 需求:创建如下的DataFrame:

由于列名为Fruits、Quantity和Color,因此对应的字典的键也就是这三个,而每一列的值则对应字典中的键值:

fruits_dict = { 'Fruits':['Apple','Banana','Cherry','Dates'],

'Quantity': [5, 10, 8, 3],

'Color': ['Red', 'Yellow', 'Red', 'Brown']}

df = pd.DataFrame(fruits_dict)

df

再例如用Series生成的字典创建:

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),

'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

# index 与序列长度相投

# key代表列的表头,pd.Series 作为 value 作为该列的元素

df = pd.DataFrame(d)

df

5. 通过读取.xlsx/.csv等文件创建

#读取.xlsx

fruits = pd.read_excel('fruits.xlsx')

#读取.csv

fruits = pd.read_csv('fruits.csv')

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: