网站被百度k是什么意思好搜搜索引擎
Pandas的数据转换函数:map, apply, applymap
参数 | 描述 |
map | 只用于Series,实现每个值->值的映射 |
apply | 用于Series实现每个值的处理,用于DataFrame实现某个轴的Series的处理 |
applymap | 只能用于DataFrame, 用于处理该DataFrame的每个元素 |
1. map用于Series值的转换
- 将股票代码英文转换成中文名字
- Series.map(dict) or Series.map(function)均可
import pandas as pd
file_path = r'C:\TELCEL_MEXICO_BOT\A\互联网公司股票.xlsx'
stocks = pd.read_excel(file_path)print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00print(stocks['公司'].unique())
['BIDU' 'BABA' 'IQ' 'JD']## 公司股票代码到中文的映射,注意这是小写
dict_company_names = {'bidu':'百度','baba':'阿里巴巴','iq':'爱奇艺','jd':'京东'}
## 方法1: Series.map(dict)
stocks['公司中文'] = stocks['公司'].str.lower().map(dict_company_names)
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅 公司中文
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02 百度
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01 百度
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01 百度
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02 阿里巴巴
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00 阿里巴巴
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01 阿里巴巴
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02 爱奇艺
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01 爱奇艺
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01 爱奇艺
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03 京东
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00 京东
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00 京东## 方法2:Series.map(function), function的参数是Series的每个元素的值
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00dict_company_names = {'bidu':'百度','baba':'阿里巴巴','iq':'爱奇艺','jd':'京东'}
stocks['公司中文2'] = stocks['公司'].map(lambda x:dict_company_names[x.lower()])
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅 公司中文2
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02 百度
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01 百度
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01 百度
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02 阿里巴巴
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00 阿里巴巴
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01 阿里巴巴
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02 爱奇艺
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01 爱奇艺
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01 爱奇艺
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03 京东
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00 京东
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00 京东
2. apply用于Series和DataFrame的转换
- Series.apply(function), 函数的参数是每个值
- DataFrame.apply(function),函数的参数是Series
import pandas as pd
import numpy as np
file_path = r'C:\TELCEL_MEXICO_BOT\A\互联网公司股票.xlsx'
stocks = pd.read_excel(file_path)
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00dict_company_names = {'bidu':'百度','baba':'阿里巴巴','iq':'爱奇艺','jd':'京东'}## Series.apply(function)stocks['公司中文3'] = stocks['公司'].apply(lambda x:dict_company_names[x.lower()] )
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅 公司中文3
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02 百度
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01 百度
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01 百度
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02 阿里巴巴
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00 阿里巴巴
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01 阿里巴巴
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02 爱奇艺
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01 爱奇艺
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01 爱奇艺
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03 京东
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00 京东
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00 京东## DataFrame.apply(function)stocks['公司中文4'] = stocks.apply(lambda x:dict_company_names[x['公司'].lower()], axis=1)
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅 公司中文4
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02 百度
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01 百度
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01 百度
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02 阿里巴巴
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00 阿里巴巴
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01 阿里巴巴
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02 爱奇艺
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01 爱奇艺
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01 爱奇艺
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03 京东
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00 京东
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00 京东## 注意在这个代码中
1. apply 是在stocks这个DataFrame上调用
2. lambda x 的 x是一个Series,因为指定了axis=1,所以Series的key是列名,可以用x['公司']获取
3. applymap用于DataFrame所有值的转换
import pandas as pdfile_path = r'C:\TELCEL_MEXICO_BOT\A\互联网公司股票.xlsx'
stocks = pd.read_excel(file_path)
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01
3 2019-10-03 BABA 1169.48 166.65 170.18 165.00 10.39 0.02
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00
5 2019-10-01 BABA 165.15 168.01 168.23 163.64 14.19 -0.01
6 2019-10-03 IQ 16.06 15.71 16.38 15.32 10.08 0.02
7 2019-10-02 IQ 15.72 15.85 15.87 15.12 8.10 -0.01
8 2019-10-01 IQ 15.92 16.14 16.22 15.50 11.65 -0.01
9 2019-10-03 JD 128.80 28.11 28.97 27.82 8.77 -0.03
10 2019-10-02 JD 128.06 28.00 28.22 27.53 9.53 0.00
11 2019-10-01 JD 28.19 28.22 28.57 27.97 10.64 0.00sub_df = stocks[['收盘', '开盘','高', '低', '交易量']]
print(sub_df)收盘 开盘 高 低 交易量
0 104.32 102.35 104.73 101.15 2.24
1 102.62 100.85 103.24 99.50 2.69
2 102.00 102.80 103.26 101.00 1.78
3 1169.48 166.65 170.18 165.00 10.39
4 165.77 162.82 166.88 161.90 11.60
5 165.15 168.01 168.23 163.64 14.19
6 16.06 15.71 16.38 15.32 10.08
7 15.72 15.85 15.87 15.12 8.10
8 15.92 16.14 16.22 15.50 11.65
9 128.80 28.11 28.97 27.82 8.77
10 128.06 28.00 28.22 27.53 9.53
11 28.19 28.22 28.57 27.97 10.64## 将这些数据取整数,应用于所有元素
print(sub_df.applymap(lambda x:int(x)))收盘 开盘 高 低 交易量
0 104 102 104 101 2
1 102 100 103 99 2
2 102 102 103 101 1
3 1169 166 170 165 10
4 165 162 166 161 11
5 165 168 168 163 14
6 16 15 16 15 10
7 15 15 15 15 8
8 15 16 16 15 11
9 128 28 28 27 8
10 128 28 28 27 9
11 28 28 28 27 10## 直接修改原df的这几列stocks.loc[:,['收盘', '开盘','高', '低', '交易量']] = sub_df.applymap(lambda x:int(x))
print(stocks)日期 公司 收盘 开盘 高 低 交易量 涨跌幅
0 2019-10-03 BIDU 104 102 104 101 2 0.02
1 2019-10-02 BIDU 102 100 103 99 2 0.01
2 2019-10-01 BIDU 102 102 103 101 1 -0.01
3 2019-10-03 BABA 1169 166 170 165 10 0.02
4 2019-10-02 BABA 165 162 166 161 11 0.00
5 2019-10-01 BABA 165 168 168 163 14 -0.01
6 2019-10-03 IQ 16 15 16 15 10 0.02
7 2019-10-02 IQ 15 15 15 15 8 -0.01
8 2019-10-01 IQ 15 16 16 15 11 -0.01
9 2019-10-03 JD 128 28 28 27 8 -0.03
10 2019-10-02 JD 128 28 28 27 9 0.00
11 2019-10-01 JD 28 28 28 27 10 0.00