1.array转换为DataFrame
import numpy as np
import pandas as pd
array_demo= np.random.randn(2,4)
df = pd.DataFrame(array_demo)
# 将多个一维合并df
df = pd.DataFrame()
arr5=np.array([1,1,2,2])
arr6=np.array([3,3,4,4])
arr3=np.array([3,3,4,4])
df["arr3"] = arr3
df["arr5"] = arr5
df["arr6"] = arr6
print(df)
2 DataFrame转换为array
import numpy as np
import pandas as pd
mmm = np.array(df)
3 增加,删除,插入,合并
append() 1 在数据末尾做追加,有返回值,不改变原来数组的结构 2 如果是多维数组,append后变成一维数组,在末尾添加 3 如果是多维数组添加多维数组,append后也变成一维数组
a = np.array([[1,2,3],[4,5,6]])
result = np.append(a, np.array([[7,8,9],[4,5,6]]))
insert()
1 多维数组在指定位置上加入一个值,默认当作一维数组进行操作,返回一维数组
2 添加的value值是一个一维数组或列表或单个值,不能插入多维数组
3 如果要往多维数组中添加值,需要指定axis,并且添加的行或者列元素长度和插入的元素长度相同,否则报错
a = np.array([[1,2,3],[4,5,6]])
result = np.insert(a, 0, [99])
result = np.insert(result, 1, 66)
delete()
1 多维数组不指定axis会改变多维数组为一维数组,指定axis可以删除一行或者一列
arr3=np.arange(20).reshape(4,5)
print('#####arr3不指定 axis ')
print(arr3)
print(np.delete(arr3,0))
print('#####arr3指定 axis 0删除行 1 删除列#########')
print(np.delete(arr3, 3, axis=0))
print(np.delete(arr3, 3, axis=1))
concatenate()
1 多维数组axis指定行或者列合并
2 行列相加时,对应格式一致
arr5=np.array([[1,1],[2,2]])
arr6=np.array([[3,3],[4,4]])
print(np.concatenate((arr5,arr6))) # mo默认axis=0
# print(np.concatenate((arr5,arr6), axis=0))
print(np.concatenate((arr5,arr6, arr3), axis=0))
print(np.concatenate((arr5,arr6), axis=1))
# print(np.concatenate((arr5,arr6, arr3), axis=1))
4 np默认值填充
data = data.replace(to_replace = "?", value = np.nan)
data.dropna(inplace = True)
data.isnull().any()
5 pd默认值填充
1. 用固定值填充
data['灰度分'] = data['灰度分'].fillna('-99')
2. 用均值填充
data['灰度分'] = data['灰度分'].fillna(data['灰度分'].mean()))
3. 用众数填充
与均值类似,可以用未缺失数据的众数来填充缺失值
data['灰度分'] = data['灰度分'].fillna(data['灰度分'].mode()))
4. 用上下数据进行填充
用前一个数据进行填充
data['灰度分'] = data['灰度分'].fillna(method='pad')
用后一个数据进行填充
data['灰度分'] = data['灰度分'].fillna(method='bfill')
5. 用插值法填充
data['灰度分'] = data['灰度分'].interpolate()
6. 用KNN进行填充
from fancyimpute import BiScaler, KNN, NuclearNormMinimization, SoftImpute
dataset = KNN(k=3).complete(dataset)