Pandas备忘

1. drop columns

df.drop(columns=['Founder', 'Locations'])

2. 两列复制到一起

df['aaa'] = df['aa'] +'-'+ df['a'] 

3. 筛选

df[(df.A==100)&(df.B=='a')]

4. row_number

df['sort_num']=df.groupby('id')['dt'].rank().astype(int)

5. pivot table count

pd.pivot_table(df, values='col1', index='col2', columns='col3', aggfunc='count')

6.生成分布图:

df.hist(bins=100, figsize=(20,15),color='#3aa6dd')

7.分位数:

np.quantile(df['xxx'], 0.25)

8.不要科学记数法

np.set_printoptions(suppress=True)

pd.set_option('display.float_format', lambda x: '%.2f' % x) #为了直观的显示数字,不采用科学计数法

9. 大规模筛选 ,isin

https://codeantenna.com/a/LrPDQVhiL5

10.选取特定列

df = df.loc[:, ['A', 'C']]

df = df.iloc[:, [0, 2]]

11. python表格显示所有的值

#显示所有列

pd.set_option('display.max_columns', None)

#显示所有行

pd.set_option('display.max_rows', None)

#设置value的显示长度为100,默认为50

pd.set_option('max_colwidth',100)

12.rename

df.rename({'a':'X','b':'Y'}, axis=1)

13.to_csv中文

df_final.to_csv('df_final.csv',encoding='utf_8_sig')

df.to_excel(filename, index=False, encoding='utf-8')

14. group_by

df.groupby(by=["b"]).sum()

df.groupby(by=["b"]).count().sort_values(ascending=False)

15. 行转列,列转行

https://blog.csdn.net/qq_41780234/article/details/121622495

16. 提取字符串里面的数字

   a = pd.read_csv('train_list.txt', sep = ' ', dtype={'id':str, 'lable':int})

    a['id']=pd.to_numeric(a['id'].str.extract(r'(\d+)'))

17. left join

merge = tmd.merge(tmp, on=['topic_id','day'], how='left')

18. case when

np.select(condition_list, choice_list, default=0)

# 条件列表、执行操作列表、缺失值

df['c'] = np.select([(df['a'].isnull()) & (df['b'] == 0),

                    (df['a'].isnull()) & (df['b'] == 1),

                    (df['a'] == 2) & (df['b'] == 0)],

                    ['one', 'two', 'three'],

                    default = 'XXX')

19. eval遍历

for i in range(len(df['column'])):

    df['column'][i] = eval(df['column'][i])

20. 取list里含有特定字符的前面的字符

for i in range(len(df['Column'])):

    df['top1'][i] = min([item.split(':top_1', 1)[0] for item in df['Column'][i]], key=len)

    if i%100==0: #进度条

        print(i,"/",len(df['c']))

21.string to int

df['DataFrame Column'] = df['DataFrame Column'].astype(int)

22. replace

df['Column'].replace(0, 'null')

23. 文本相似度 & 提取中文

import itertools

import numpy as np

import re

import Levenshtein

def find_chinese(str):

    pattern = re.compile(r'[^\u4e00-\u9fa5]')

    chinese = re.sub(pattern, '', str)

    return chinese

def text_fuc(lt):

    lt = [find_chinese(i) for i in lt]

    lt = list(itertools.combinations(lt,2))

    if len(lt) ==0:

        return 0

    result = 0

    for i in lt:

        result += Levenshtein.jaro_winkler(i[0],i[1])

    result = result/len(lt)

    del lt

    return result

df['simi_score'] = [text_fuc(eval(i)) for i in df['text_list']]

24. 解读OLS结果

25. percentile 表格化

describe(percentiles=[0.75,0.9,0.95]) 【针对想要75以上的分位数的情况】

groupby 后的分位数:

df.groupby(by = 'A').B.describe(percentiles=[0.75,0.9,0.95])

26. read_csv, 不同column用不同的格式

df=pd.read_csv('查询.csv',dtype = 'float64', converters = {'ct_id': str, 'bk_id': str})

27. 计算字数

df['len'] = df['aa'].apply(lambda x: len(x))

28.去掉列名里重复的字符串

df = df.rename(columns=lambda x: x.replace('↓', ''))

29.计算唯一值的个数

len(df[''].unique())

30. outer merge

df3=pd.merge(dfboy,dfgirl, on='id', how='outer')

31. 如果大于1,就赋值1

df['column_name'] = df['column_name'].apply(lambda x: 1 if x > 1 else x)

32.cat.codes

场景:连续变量做了 pd.qcut(df['yy'], 50,duplicates='drop')之后,会转化成一个一个区间,区间怎么转化成类别呢?

答案:x_data.yy = x_data.yy.cat.codes

就能把区间变成顺序的类别了~

33.array横向转纵向

场景:做完aa = preprocessing.normalize([x_data.yy]) 之后,想把这个放回dataframe,但是没办法,因为这个转化出来是横向array

答案:b = np.reshape(aa, (1,np.product(aa.shape)))[0]

就可以从横向转纵向了~

34. string转list

try:

        book_id_list_x = ast.literal_eval(book_id_list_x)

    except (SyntaxError, ValueError):

        book_id_list_x = []

这段代码是使用 ast.literal_eval() 函数尝试将字符串形式的列表解析为实际的列表对象。

ast.literal_eval() 是 Python 中的一个内置函数,用于评估字符串中的表达式,并返回结果。它可以安全地将字符串解析为 Python 字面值,例如列表、字典、元组等。

在这段代码中,我们使用 ast.literal_eval() 函数来尝试将 book_id_list_x 的值解析为列表对象。如果解析成功,则将解析后的列表赋值给对应的变量 book_id_list_x。如果解析失败(出现语法错误或无效的值),则将对应的变量赋值为空列表 []。

通过这个过程,我们可以将字符串形式的列表转换为实际的列表对象,以便后续的处理和判断。

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

推荐阅读更多精彩内容