python数据分析笔记-2
二、Pandas基础
额外说明:
1.Python title() 方法返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。
2.Python str.format()函数,它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
3.Python 字典(Dictionary) keys() 函数以列表返回一个字典所有的键。
import pandas as pd
1.Pandas库
- Pandas主要有两种数据结构:Series和DataFrame
- Series:是一维标记的数组,能够保存任何数据类型(整数,字符串,浮点数,Python对象等)。轴标签统称为索引。基本操作类似ndarray和字典,并且是大多数NumPy函数的有效参数。但是,切片等操作也会对索引进行切片。
- 引入:
from Pandas import Series, DataFrame
2.Series操作
1)Series创建
Series(data, index=index, name=name)
Series创建方式:
- 使用python列表创建
- 使用标量值创建
- 使用字典类型创建:按照index指定键的顺序作为索引,如果键对应的值不存在,显示NaN
- 使用ndarray创建
pd.Series(np.arange(5))
函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是5,步长为1。
参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况
1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数
2)Series访问
- 1) Series对象的index和values属性:
s.index:获得索引列表
s.values:获得数据列表 - 2)Series对象本身及其索引的name属性
- 3)访问Series对象的数据:
位置索引访问
标签索引访问
切片索引访问
布尔型访问(条件过滤访问)
3)Series删除
- drop函数:返回删除的数据,但源数据不改变
- pop函数:返回删除的数据,源数据改变
pop位置索引删除和pop其index删除写法不一样
import pandas as pd
ser1 = pd.Series([10,20,30,40,50], index=['a', 'b', 'c', 'd','e'])
ser2 = pd.Series(range(5))
x1 = ser1.drop('c')
print('drop删除后的结果x_1为:\n', x1)
print('drop删除后源数据:\n', ser1)
print('\n')
x2 = ser1.drop(['a','e'])
print('drop删除后的结果x_2为:\n', x2)
print('drop删除后源数据:\n', ser1)
print('\n')
x3 = ser1.pop('c')
print('pop删除的x_3为:\n', x3)
print('pop删除后源数据:\n', ser1)
print('\n')
x4 = ser2.pop(3)
print('pop删除的x_4为:\n', x4)
print('pop删除后源数据:\n', ser2)
drop删除后的结果x_1为:
a 10
b 20
d 40
e 50
dtype: int64
drop删除后源数据:
a 10
b 20
c 30
d 40
e 50
dtype: int64
drop删除后的结果x_2为:
b 20
c 30
d 40
dtype: int64
drop删除后源数据:
a 10
b 20
c 30
d 40
e 50
dtype: int64
pop删除的x_3为:
30
pop删除后源数据:
a 10
b 20
d 40
e 50
dtype: int64
pop删除的x_4为:
3
pop删除后源数据:
0 0
1 1
2 2
4 4
dtype: int64
Process finished with exit code 0
4)Series修改
- 通过索引修改数据
import pandas as pd
ser3 = pd.Series(range(10,60,10), index= list('abcde'))
print('ser3:\n',ser3)
ser3[0] = 100
ser3['c'] = 300
print('ser3:\n',ser3)
ser3:
a 10
b 20
c 30
d 40
e 50
dtype: int64
ser3:
a 100
b 20
c 300
d 40
e 50
dtype: int64
Process finished with exit code 0
5)Series添加
- 通过索引访问添加
- append方法末尾添加,返回副本,源数据不变
2.DataFrame操作
DataFrame基本属性
查询访问DataFrame中的数据
- 访问单列数据
- 访问多列数据
- 访问多行数据
筛选DataFrame中的数据(重要,需熟练掌握)
- 按照条件筛选数据:and(&与)、or(|或)、not(~非)、xor(^异或)
- 使用loc切片方法(更多使用该方法):
- DataFrame.loc [行索引名称或条件,列索引名称]
- 行索引为区间时,前后都闭合
- 使用iloc切片方法
- DataFrame.iloc[行索引位置,列索引位置]
- 行索引为区间时,前闭后开
注意:loc 更加灵活多变,代码可读性更高,iloc 代码简洁,但可读性不高,建议多使用 loc 方法
添加DataFrame中的数据
- 添加一列
- 新建一个列索引,并赋固定值或非固定值,添加到最后一列
- 插入一列
- df.insert(int = 位置, column = 列名, value = 插入的值)
- 插入的值可以是固定值、列表、Series
- 添加一行
- loc[rowIndex]方法添加行到末尾,直接修改源数据
- append方法添加行到末尾,返回副本,源数据不变
删除DataFrame中的数据
- 删除列
- df.drop(labels=列名,axis=1,inplace=True)
- axis=1 表示列,inplace=True表示改变源数据
- 删除行
- df.drop(labels=索引,axis=0,inplace=True)
- axis=0 表示行,inplace=True表示改变源数据
- 修改DataFrame中的数据
- 使用 loc方法 获取数据并赋值修改
3.pandas汇总统计和计算
基于NumPy的统计函数
pandas库是基于NumPy,可以用NumPy提供的函数对数据进行描述性统计。
基于pandas描述性统计方法
类别型数据统计(重要)
- 描述类别特征的分布状况,可以使用频数统计表。
- pandas库中实现频数统计的方法为value_counts。
- describe方法能支持对category类型的数据进行描述性统计
- 返回四个统计量,分别为列非空元素的数目、类别数目、数目最多的类别、数目最多类别的数目
- pandas提供了categorites类,可以使用astype方法将目标特征的数据类型转换为category类别。