Pandas数据转换处理

简介: Pandas数据转换处理

1.数据转换


1.1数据值替换


数据替换不仅可以对一个值进行替换,也可以同时对不同值进行多值替换,参数传入的方式可以是列表,也可以是字典格式。Pandas中通过replace进行数据值的替换。


data = {'姓名':['李红','小明','马芳','国志'],'性别':['0','1','0','1'],
'籍贯':['北京','甘肃','','上海']}
df = pd.DataFrame(data)
df = df.replace('','不详')
print(df)
#传入列表实现多值替换
df = df.replace(['不详','甘肃'],['兰州','兰州'])
print(df)
#传入字典实现多值替换
df = df.replace({'1':'男','0':'女'})
print(df)
#-------------------------------------------------------------------
姓名 性别  籍贯
0  李红  0  北京
1  小明  1  甘肃
2  马芳  0  不详
3  国志  1  上海
 姓名 性别  籍贯
0  李红  0  北京
1  小明  1  兰州
2  马芳  0  兰州
3  国志  1  上海
 姓名 性别  籍贯
0  李红  女  北京
1  小明  男  兰州
2  马芳  女  兰州
3  国志  男  上海


1.2使用函数或映射进行数据转换


data = {'姓名':['李红','小明','马芳','国志'],'性别':['0','1','0','1'],
'籍贯':['北京','兰州','兰州','上海']}
df = pd.DataFrame(data)
df['成绩'] = [58,86,91,78]
print(df)
def grade(x):
    if x>=90:
        return '优'
    elif 70<=x<90:
        return '良'
    elif 60<=x<70:
        return '中'
    else:
        return '差'
df['等级'] = df['成绩'].map(grade)
print(df)
#----------------------------------------------------
  姓名 性别  籍贯  成绩
0  李红  0  北京  58
1  小明  1  兰州  86
2  马芳  0  兰州  91
3  国志  1  上海  78
姓名 性别  籍贯  成绩 等级
0  李红  0  北京  58  差
1  小明  1  兰州  86  良
2  马芳  0  兰州  91  优
3  国志  1  上海  78  良


2.数据标准化


2.1离差标准化数据


离差标准化是将原始数据的数值映射到[0,1]。转换公式如下:


c0da3086fffa97d9ba0ce6e02418d6e6_eq_x_%7B1%7D%3D%5Cfrac%7Bx-min%7D%7Bmax-min%7D.png


def MinMaxScale(data):
    data = (data-data.min())/(data.max()-data.min())
    return data
x = np.array([[ 1., -1.,  2.],[ 2.,  0.,  0.],[ 0.,  1., -1.]])
print('原始数据为:\n',x)
x_scaled = MinMaxScale(x)
print('标准化后矩阵为:\n',x_scaled,end = '\n')
#--------------------------------------------------------------
原始数据为:
 [[ 1. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -1.]]
标准化后矩阵为:
 [[0.66666667 0.         1.        ]
 [1.         0.33333333 0.33333333]
 [0.33333333 0.66666667 0.        ]]


2.2标准差标准化数据


标准差标准化又称零均值标准化或z分数标准化,经过该方法处理的数据均值为0,标准差为1,转换公式如下:


238f79216e7ab61684277885c5b4fe1f_eq_x_%7B1%7D%3D%5Cfrac%7Bx-mean%7D%7Bstd%7D.png


def StandardScale(data):
    data = (data-data.mean())/data.std()
    return data
x = np.array([[ 1., -1.,  2.],[ 2.,  0.,  0.],[ 0.,  1., -1.]])
print('原始数据为:\n',x)
x_scaled = StandardScale(x)
print('标准化后矩阵为:\n',x_scaled,end='\n')
#------------------------------------------------------------------
原始数据为:
 [[ 1. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -1.]]
标准化后矩阵为:
 [[ 0.52128604 -1.35534369  1.4596009 ]
 [ 1.4596009  -0.41702883 -0.41702883]
 [-0.41702883  0.52128604 -1.35534369]]


3.数据离散化


3.1等宽法


Pandas提供了cut函数,可以进行连续型数据的等宽离散化。


np.random.seed(666)
score_list = np.random.randint(25, 100, size = 10)
print('原始数据:\n',score_list)
bins = [0, 59, 70, 80, 100]
score_cut = pd.cut(score_list, bins)
print(pd.value_counts(score_cut))# 统计每个区间人数
#----------------------------------------------------
原始数据:
 [27 70 55 87 95 98 55 61 86 76]
(80, 100]    4
(0, 59]      3
(59, 70]     2
(70, 80]     1


3.2等频法


相比于等宽法,等频法避免了类分布不均匀的问题,但是也有可能将数值非常相近的两个值分到不同的区间。


3.3聚类分析法


主要是通过聚类分析算法进行聚类,然后处理聚类得到的簇,为合并到一个簇的连续型数据做同一标记。


目录
相关文章
|
1月前
|
Python
使用 Pandas 库时,如何处理数据的重复值?
在使用Pandas处理数据重复值时,需要根据具体的数据特点和分析需求,选择合适的方法来确保数据的准确性和唯一性。
109 8
|
3月前
|
Serverless 数据处理 索引
Pandas中的shift函数:轻松实现数据的前后移动
Pandas中的shift函数:轻松实现数据的前后移动
249 0
|
1天前
|
数据挖掘 索引 Python
Pandas数据读取:CSV文件
Pandas 是 Python 中强大的数据分析库,`read_csv` 函数用于从 CSV 文件中读取数据。本文介绍 `read_csv` 的基本用法、常见问题及其解决方案,并通过代码案例详细说明。涵盖导入库、读取文件、指定列名和分隔符、处理文件路径错误、编码问题、大文件读取、数据类型问题、日期时间解析、空值处理、跳过行、指定索引列等。高级用法包括自定义列名映射、处理多行标题和注释行。希望本文能帮助你更高效地使用 Pandas 进行数据读取和处理。
27 13
|
1月前
|
Python
|
1月前
|
Python
|
1月前
|
Python
Pandas 常用函数-数据合并
Pandas 常用函数-数据合并
37 1
|
1月前
|
索引 Python
Pandas 常用函数-数据排序
10月更文挑战第28天
14 1
|
1月前
|
Python
Pandas 常用函数-查看数据
Pandas 常用函数-查看数据
16 2
|
1月前
|
SQL JSON 数据库
Pandas 常用函数-读取数据
Pandas 常用函数-读取数据
17 2
|
1月前
|
Python
通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法
在金融分析领域,&quot;死叉&quot;指的是短期移动平均线(如MA5)下穿长期移动平均线(如MA10),而&quot;金叉&quot;则相反。本文介绍了一种利用Python编程语言,通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法。该方法首先计算两种移动平均线,接着确定它们的交叉点,最后检查并输出最近一次死叉及其后是否形成了金叉。此技术广泛应用于股市趋势分析。
51 2