第一章:数据清洗常用工具
- 1.numpy常用数据结构
- 常用清洗工具:
- numpy常用数据结构:
- Numpy常用方法
- 数组访问方法
- 练习(jupyter)代码下面是结果
- 2.Numpy常用数据清洗函数
- 数据的排序
- 数据的搜索
- 练习(jupyter)代码下面是结果
- 3.Pandas常用数据结构series和dataframe
- series
- dataframe
- 常用方法
- 练习(jupyter)代码下面是结果
1.numpy常用数据结构
常用清洗工具:
- 目前在Python中, numpy和pandas是最主流的工具
- Numpy中的向量化运算使得数据处理变得高效
- Pandas提供了大量数据清洗的高效方法
- 在Python中,尽可能多的使用numpy和pandas中的 函数,提高数据清洗的效率
numpy常用数据结构:
- Numpy中常用的数据结构是ndarray格式
- 使用array函数创建,语法格式为array(列表或元组)
- 可以使用其他函数例如arange、linspace、zeros等创建
Numpy常用方法
数组访问方法
练习(jupyter)代码下面是结果
1 Numpy常用数据结构
1. 数组创建
import numpy as np
#一维数组
arr1=np.array([-9,7,4,3])
type(arr1)
numpy.ndarray
arr1
array([-9, 7, 4, 3])
int
arr1=np.array([-9,7,4,3],dtype='int')
arr1
array([-9, 7, 4, 3])
#二维数组
arr3 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
arr3
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
np.arange(1,10,2)
array([1, 3, 5, 7, 9])
True
np.linspace(1,10,20,endpoint=True)
array([ 1. , 1.47368421, 1.94736842, 2.42105263, 2.89473684,
3.36842105, 3.84210526, 4.31578947, 4.78947368, 5.26315789,
5.73684211, 6.21052632, 6.68421053, 7.15789474, 7.63157895,
8.10526316, 8.57894737, 9.05263158, 9.52631579, 10. ])
9/19
0.47368421052631576
np.zeros(4)
array([0., 0., 0., 0.])
np.ones([2,3])
array([[1., 1., 1.],
[1., 1., 1.]])
arr3+1.5
array([[ 2.5, 3.5, 4.5, 5.5],
[ 6.5, 7.5, 8.5, 9.5],
[10.5, 11.5, 12.5, 13.5]])
1.2 数组方法
arr1.ndim
1
arr1.shape#逗号后面无数字说明一维数组
(4,)
arr3.shape
(3, 4)
arr3.size
12
arr3.dtype
dtype('int32')
data2 = ((8.5,6,4.1,2,0.7),(1.5,3,5.4,7.3,9),(3.2,4.5,6,3,9),(11.2,13.4,15.6,17.8,19))
arr2 = np.array(data2)
arr2
arr2
array([[ 8.5, 6. , 4.1, 2. , 0.7],
[ 1.5, 3. , 5.4, 7.3, 9. ],
[ 3.2, 4.5, 6. , 3. , 9. ],
[11.2, 13.4, 15.6, 17.8, 19. ]])
arr2[0:3]#第一行到第三行
array([[8.5, 6. , 4.1, 2. , 0.7],
[1.5, 3. , 5.4, 7.3, 9. ],
[3.2, 4.5, 6. , 3. , 9. ]])
arr2[1,2]#区第二行第三列数据 “,”左边是行操作,右边是列操作
5.4
arr2[:,3]#去第三列数据,如果不加:取的是行数
array([11.2, 13.4, 15.6, 17.8, 19. ])
arr2[:,1:3]#区第二列和第三列数据
array([[ 6. , 4.1],
[ 3. , 5.4],
[ 4.5, 6. ],
[13.4, 15.6]])
2.Numpy常用数据清洗函数
数据的排序
数据的搜索
练习(jupyter)代码下面是结果
1.3 Numpy常用数据清洗函数
排序 降序建议用sorted函数
s = np.array([1,2,3,4,3,1,2,2,4,6,7,2,4,8,4,5])
np.sort(s)
array([1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 6, 7, 8])
sorted(s,reverse =True)#降序
[8, 7, 6, 5, 4, 4, 4, 4, 3, 3, 2, 2, 2, 2, 1, 1]
arr1 = np.array([[0,1,3],[4,2,9],[4,5,9],[1,-3,4]])
arr1
array([[ 0, 1, 3],
[ 4, 2, 9],
[ 4, 5, 9],
[ 1, -3, 4]])
np.sort(arr1)
array([[ 0, 1, 3],
[ 2, 4, 9],
[ 4, 5, 9],
[-3, 1, 4]])
np.sort(arr1,axis = 0) # 0代表沿着行的方向, 1代表沿着列的方向 不加axis参输默认按照1的方式排序
array([[ 0, -3, 3],
[ 1, 1, 4],
[ 4, 2, 9],
[ 4, 5, 9]])
np.sort(arr1,axis = 1)
array([[ 0, 1, 3],
[ 2, 4, 9],
[ 4, 5, 9],
[-3, 1, 4]])
-argsort返回的是排完序以后,在原数据中的索引位置
-返回的是数据中,从小到大的索引值
s = np.array([1,2,3,4,3,1,2,2,4,6,7,2,4,8,4,5])
np.argsort(s)
array([ 0, 5, 1, 6, 7, 11, 2, 4, 3, 8, 12, 14, 15, 9, 10, 13],
dtype=int64)
#np.where和np.extract
np.where(s>3,1,-1)# 满足条件的,赋值为3,不满足的赋值为-1,返回的数据长度和s一样
array([-1, -1, -1, 1, -1, -1, -1, -1, 1, 1, 1, -1, 1, 1, 1, 1])
np.extract(s>3,s)# 只输出满足条件的数据
array([4, 4, 6, 7, 4, 8, 4, 5])
3.Pandas常用数据结构series和dataframe
series
dataframe
常用方法
练习(jupyter)代码下面是结果
# 构造数据框
#数据框其实就是一个二维表结构,是数据分析中,最常用的数据结构
list1 = [['张三',23,'男'],['李四',27,'女'],['王二',26,'女']]#使用嵌套列表
df1 = pd.DataFrame(list1,columns=['姓名','年龄','性别'])
type(df1)
pandas.core.frame.DataFrame
df2 = pd.DataFrame({'姓名':['张三','李四','王二'],'年龄':[23,27,26],'性别':['男','女','女']}) #使用字典,字典的键被当成列名
df2
df2
姓名 年龄 性别
0 张三 23 男
1 李四 27 女
2 王二 26 女
array1 = np.array([['张三',23,'男'],['李四',27,'女'],['王二', 26,'女']]) #使用numpy
df3 = pd.DataFrame(array1,columns=['姓名','年龄','性别'],index = ['a','b','c'] )
df3
姓名 年龄 性别
a 张三 23 男
b 李四 27 女
c 王二 26 女
#dataframe方法
df2.values
array([['张三', 23, '男'],
['李四', 27, '女'],
['王二', 26, '女']], dtype=object)
df2.index
RangeIndex(start=0, stop=3, step=1)
df2.columns
df2.columns
Index(['姓名', '年龄', '性别'], dtype='object')
df2.dtypes
姓名 object
年龄 int64
性别 object
dtype: object
df2.ndim
2
df2.size
9