python数据分析7:数据格式化

【设置小数位数】

DataFrame.round(decimals=0, *args, **kwargs)

decimals 每一列四舍五入的小数位数,整型、字典或Series对象。如果是整数,则将每一列四舍五入到相同的位置;否则,将dict和Series舍入到可变数目的位置。如果小数是类似于字典的,那么列名应该在键中。如果小数是级数,列名在索引中。没有包含在小数中的任何列都将保持原样,非输入列的小数元素将被忽略。

*args 附加的关键字参数

**kwargs 附加的关键字参数

返回值 返回DataFrame对象

# 四舍五入保留指定的小数位数

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.random([5, 5]),columns=['A1', 'A2', 'A3', 'A4', 'A5'])

# print(df)

        A1        A2        A3        A4        A5

0  0.299625  0.222070  0.013363  0.344320  0.099325

1  0.000787  0.308033  0.165536  0.418188  0.683410

2  0.720442  0.602093  0.323868  0.947492  0.970904

3  0.621043  0.185310  0.568168  0.850920  0.931071

4  0.659879  0.710683  0.030170  0.244488  0.642424

print(df.round(2))

    A1    A2    A3    A4    A5

0  0.51  0.81  0.72  0.59  0.90

1  0.36  0.71  0.03  0.72  0.38

2  0.91  0.92  0.11  0.34  0.53

3  0.57  0.28  0.26  0.15  0.51

4  0.27  0.96  0.28  0.17  0.52

print(df.round({'A1':1, 'A2':2}))  # A1列保留小数点的后一位,A2列保留小数点的后两位

    A1    A2        A3        A4        A5

0  0.1  0.10  0.403920  0.558473  0.151692

1  0.4  0.00  0.867565  0.029727  0.806319

2  0.8  0.42  0.886093  0.247809  0.358689

3  0.4  0.27  0.222844  0.374405  0.719389

4  0.8  0.21  0.261631  0.386564  0.214388

s1 = pd.Series([1, 0, 2], index=['A1', 'A2', 'A3'])

print(df.round(s1))  # 设置Series对象的小数位数

    A1  A2    A3        A4        A5

0  0.2  0.0  0.60  0.291033  0.969539

1  0.3  0.0  0.44  0.519556  0.455127

2  0.8  1.0  0.48  0.947509  0.201501

3  0.5  0.0  0.00  0.461904  0.576343

4  0.6  0.0  0.87  0.617363  0.896591

# 自定义函数

df.applymap(lambda x: '%.2f'%x)  # 处理后的数据不再是浮点型而是对象型

print(df)

【设置百分比】

# 将指定数据格式化为百分比数据

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.random([5,5]), columns=['A1', 'A2', 'A3', 'A4', 'A5'])

# df['百分比'] = df['A1'].apply(lambda x:format(x, '.0%'))  # 整列保留0位小数

        A1        A2        A3        A4        A5  百分比

0  0.953212  0.642768  0.819766  0.610742  0.922975  95%

1  0.881631  0.420358  0.394806  0.960303  0.120988  88%

2  0.110223  0.091917  0.163204  0.835646  0.422145  11%

3  0.200097  0.786347  0.663281  0.147799  0.265478  20%

4  0.602281  0.239182  0.747308  0.390589  0.378752  60%

df['百分比'] = df['A1'].apply(lambda x:format(x, '.2%'))  # 整列保留2位小数

        A1        A2        A3        A4        A5    百分比

0  0.457696  0.754100  0.522601  0.502301  0.668932  45.77%

1  0.378477  0.006895  0.114609  0.849366  0.937605  37.85%

2  0.632259  0.719535  0.954830  0.145513  0.165507  63.23%

3  0.244287  0.731360  0.943496  0.629500  0.434717  24.43%

4  0.877607  0.653111  0.981080  0.278565  0.408406  87.76%

df['百分比'] = df['A1'].map(lambda x:'{:.0%}'.format(x))  # 使用map函数整列保留0位小数

        A1        A2        A3        A4        A5  百分比

0  0.553920  0.441553  0.942843  0.695469  0.483677  55%

1  0.205598  0.301583  0.547959  0.561747  0.271282  21%

2  0.700769  0.316883  0.581278  0.321206  0.765251  70%

3  0.849178  0.282629  0.151513  0.383950  0.509054  85%

4  0.857620  0.741968  0.708585  0.034897  0.490551  86%

【设置千位分隔符】

# 处理后的数据不再是浮点型而是对象型

# 将金额格式化为带千位分隔符的数据

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [['零基础学Python', '1月', 49768889], ['零基础学Python', '2月', 1777775], ['零基础学Python', '3月',137999990]]

columns = ['图书', '月份', '$']

df = pd.DataFrame(data=data, columns=columns)

df['$'] = df['$'].apply(lambda x:format(int(x), ','))

print(df)

            图书 月份            $

0  零基础学Python  1月  49,768,889

1  零基础学Python  2月    1,777,775

2  零基础学Python  3月  137,999,990

# ***这些数据不是数值型,而是数字和逗号组成的字符串,再变成数值很麻烦,慎重使用***

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容