复制代码
1
2
3
4
5
6import pandas as pd import os os.chdir(r'C:UsersHansDesktopdata_analysis') df = pd.read_excel('pandas_multiindex.xls') df.head()
日期 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司 | |
---|---|---|---|---|---|---|---|---|
0 | 2020年5月27日 | 201.18 | 202.64 | 202.64 | 196.77 | 23.61M | -0.0027 | BABA |
1 | 2020年5月26日 | 201.72 | 205.96 | 206.69 | 201.16 | 28.68M | 0.0101 | BABA |
2 | 2020年5月22日 | 199.70 | 203.23 | 204.88 | 198.99 | 51.98M | -0.0587 | BABA |
3 | 2020年5月21日 | 212.16 | 210.91 | 214.51 | 209.54 | 29.85M | -0.0214 | BABA |
4 | 2020年5月20日 | 216.79 | 220.12 | 221.10 | 210.78 | 38.32M | -0.0019 | BABA |
“”"
(1)map 只用于Series,实现每个值–>值的映射
(2)apply 用于Series实现每个值的处理,用于DataFrame实现某个轴的Series的处理
(3)applymap 只能用于DataFrame,用于处理DataFrame的每个元素
“”"
复制代码
1
2df["公司"].unique()
复制代码
1
2array(['BABA', 'JD', 'JSR', 'HR'], dtype=object)
复制代码
1
2
3
4
5
6#(1)map用于Series值的转换。实例:将股票代码英文转换成中文名字 dict_names = {"BABA":"阿里巴巴","JD":"京东","JSR":"金斯瑞","HR":"恒瑞"} #方法一:Series.map(dict) df["公司中文名称1"] = df["公司"].map(dict_names) df.head()
日期 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司 | 公司中文名称1 | |
---|---|---|---|---|---|---|---|---|---|
0 | 2020年5月27日 | 201.18 | 202.64 | 202.64 | 196.77 | 23.61M | -0.0027 | BABA | 阿里巴巴 |
1 | 2020年5月26日 | 201.72 | 205.96 | 206.69 | 201.16 | 28.68M | 0.0101 | BABA | 阿里巴巴 |
2 | 2020年5月22日 | 199.70 | 203.23 | 204.88 | 198.99 | 51.98M | -0.0587 | BABA | 阿里巴巴 |
3 | 2020年5月21日 | 212.16 | 210.91 | 214.51 | 209.54 | 29.85M | -0.0214 | BABA | 阿里巴巴 |
4 | 2020年5月20日 | 216.79 | 220.12 | 221.10 | 210.78 | 38.32M | -0.0019 | BABA | 阿里巴巴 |
复制代码
1
2
3
4
5#方法二:Series.map(function) df["公司中文2"]=df["公司"].map(lambda x:dict_names[x]) df.head() #lambda函数不会!!
日期 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司 | 公司中文名称1 | 公司中文2 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2020年5月27日 | 201.18 | 202.64 | 202.64 | 196.77 | 23.61M | -0.0027 | BABA | 阿里巴巴 | 阿里巴巴 |
1 | 2020年5月26日 | 201.72 | 205.96 | 206.69 | 201.16 | 28.68M | 0.0101 | BABA | 阿里巴巴 | 阿里巴巴 |
2 | 2020年5月22日 | 199.70 | 203.23 | 204.88 | 198.99 | 51.98M | -0.0587 | BABA | 阿里巴巴 | 阿里巴巴 |
3 | 2020年5月21日 | 212.16 | 210.91 | 214.51 | 209.54 | 29.85M | -0.0214 | BABA | 阿里巴巴 | 阿里巴巴 |
4 | 2020年5月20日 | 216.79 | 220.12 | 221.10 | 210.78 | 38.32M | -0.0019 | BABA | 阿里巴巴 | 阿里巴巴 |
复制代码
1
2
3
4
5#(2)apply 用于Series和DataFrame的转换,Series.apply(function),函数的参数是每个值。 #DataFrame.apply(function),函数的参数是Series df["公司中文3"]=df["公司"].apply(lambda x:dict_names[x]) df.head()
日期 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司 | 公司中文名称1 | 公司中文2 | 公司中文3 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2020年5月27日 | 201.18 | 202.64 | 202.64 | 196.77 | 23.61M | -0.0027 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
1 | 2020年5月26日 | 201.72 | 205.96 | 206.69 | 201.16 | 28.68M | 0.0101 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
2 | 2020年5月22日 | 199.70 | 203.23 | 204.88 | 198.99 | 51.98M | -0.0587 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
3 | 2020年5月21日 | 212.16 | 210.91 | 214.51 | 209.54 | 29.85M | -0.0214 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
4 | 2020年5月20日 | 216.79 | 220.12 | 221.10 | 210.78 | 38.32M | -0.0019 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
复制代码
1
2
3df["公司中文4"]=df.apply(lambda x:dict_names[x["公司"]],axis = 1)#注意等式右侧是df.apply,需要指定axis df.head()
日期 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司 | 公司中文名称1 | 公司中文2 | 公司中文3 | 公司中文4 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2020年5月27日 | 201.18 | 202.64 | 202.64 | 196.77 | 23.61M | -0.0027 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
1 | 2020年5月26日 | 201.72 | 205.96 | 206.69 | 201.16 | 28.68M | 0.0101 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
2 | 2020年5月22日 | 199.70 | 203.23 | 204.88 | 198.99 | 51.98M | -0.0587 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
3 | 2020年5月21日 | 212.16 | 210.91 | 214.51 | 209.54 | 29.85M | -0.0214 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
4 | 2020年5月20日 | 216.79 | 220.12 | 221.10 | 210.78 | 38.32M | -0.0019 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
复制代码
1
2
3
4#(3)applymap 用于DataFrame的数据转换 sub_df = df[["收盘","开盘","高","低","交易量"]] sub_df.head()
收盘 | 开盘 | 高 | 低 | 交易量 | |
---|---|---|---|---|---|
0 | 201.18 | 202.64 | 202.64 | 196.77 | 23.61M |
1 | 201.72 | 205.96 | 206.69 | 201.16 | 28.68M |
2 | 199.70 | 203.23 | 204.88 | 198.99 | 51.98M |
3 | 212.16 | 210.91 | 214.51 | 209.54 | 29.85M |
4 | 216.79 | 220.12 | 221.10 | 210.78 | 38.32M |
复制代码
1
2
3
4sub_df["交易量"] = sub_df["交易量"].str.replace("M","") sub_df.head() #没有解决怎么将字符串变成数字类型
复制代码
1
2
3
4
5
6C:ProgramDataAnaconda3libsite-packagesipykernel_launcher.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy """Entry point for launching an IPython kernel.
收盘 | 开盘 | 高 | 低 | 交易量 | |
---|---|---|---|---|---|
0 | 201.18 | 202.64 | 202.64 | 196.77 | 23.61 |
1 | 201.72 | 205.96 | 206.69 | 201.16 | 28.68 |
2 | 199.70 | 203.23 | 204.88 | 198.99 | 51.98 |
3 | 212.16 | 210.91 | 214.51 | 209.54 | 29.85 |
4 | 216.79 | 220.12 | 221.10 | 210.78 | 38.32 |
复制代码
1
2
3
4sub_df02 = df[["收盘","开盘","高","低"]] sub_df02.applymap(lambda x: int(x)).head() #将表中的这些数字取整,应用于所有元素,applymap本身就是对多有的DataFrame进行操作
收盘 | 开盘 | 高 | 低 | |
---|---|---|---|---|
0 | 201 | 202 | 202 | 196 |
1 | 201 | 205 | 206 | 201 |
2 | 199 | 203 | 204 | 198 |
3 | 212 | 210 | 214 | 209 |
4 | 216 | 220 | 221 | 210 |
复制代码
1
2
3#直接修改原df的几列 df.loc[:,['收盘','开盘','高','低']] = sub_df02.applymap(lambda x: int(x)).head()
复制代码
1
2df.head()
日期 | 收盘 | 开盘 | 高 | 低 | 交易量 | 涨跌幅 | 公司 | 公司中文名称1 | 公司中文2 | 公司中文3 | 公司中文4 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2020年5月27日 | 201.0 | 202.0 | 202.0 | 196.0 | 23.61M | -0.0027 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
1 | 2020年5月26日 | 201.0 | 205.0 | 206.0 | 201.0 | 28.68M | 0.0101 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
2 | 2020年5月22日 | 199.0 | 203.0 | 204.0 | 198.0 | 51.98M | -0.0587 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
3 | 2020年5月21日 | 212.0 | 210.0 | 214.0 | 209.0 | 29.85M | -0.0214 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
4 | 2020年5月20日 | 216.0 | 220.0 | 221.0 | 210.0 | 38.32M | -0.0019 | BABA | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 | 阿里巴巴 |
复制代码
1
2
最后
以上就是粗犷水蜜桃最近收集整理的关于pandas 数据转换函数map、apply、applymap的全部内容,更多相关pandas内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复