python数据清洗实战入门笔记(一)numpy和pandas

1.numpy常用数据结构

常用清洗工具:

  1. 目前在Python中, numpy和pandas是最主流的工具
  2. Numpy中的向量化运算使得数据处理变得高效
  3. Pandas提供了大量数据清洗的高效方法
  4. 在Python中,尽可能多的使用numpy和pandas中的 函数,提高数据清洗的效率

numpy常用数据结构:

  1. Numpy中常用的数据结构是ndarray格式
  2. 使用array函数创建,语法格式为array(列表或元组)
  3. 可以使用其他函数例如arange、linspace、zeros等创建

Numpy常用方法

image-20200511154118401

数组访问方法

image-20200511154211953

练习(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常用数据清洗函数

数据的排序

image-20200511154548026

数据的搜索

image-20200511154610700

练习(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

image-20200511154756718

dataframe

image-20200511153731775

常用方法

image-20200511154857899

练习(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	张三	231	李四	272	王二	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
原创文章 20 获赞 14 访问量 2156

猜你喜欢

转载自blog.csdn.net/qq_42166929/article/details/106064895