Pandas100题笔记(2021.2.7)

-- pandas100题知识总结

1.一个series是一个一维的标记数组,可以容纳任何数据类型(整数、字符串、浮点数、Python对象等)。必须记住,与Python列表不同,一个series总是包含相同类型的数据。

2.
df2=pd.DataFrame({'A':1.,
                  'B':pd.Timestamp('20210207'),
                 'C':pd.Series(1,index=list(range(4)),dtype='float32'),
                 'D':np.array([3]*4,dtype='int32'),
                 'E':pd.Categorical(['test','train','test','train']),
                 'F':'foo'})

3.pd.date_range()函数
语法:date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, closed=None, **kwargs)
常用参数为start、end、periods、freq。
start:指定生成时间序列的开始时间
end:指定生成时间序列的结束时间
periods:指定生成时间序列的数量
freq:生成频率,默认‘D’,可以是’H’、‘D’、‘M’、‘5H’、‘10D’
例:dates=pd.date_range('20210207',periods=6)

4.设置随机种子
np.random.seed(0)
a=np.random.randn(6,4)  --返回6行4列,数值取正态分布的array

5. numpy.linspace
语法:linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
作用为:在指定的大间隔内,返回固定间隔的数据。他将返回“num”个等间距的样本,在区间[start, stop]中。其中,区间的结束端点可以被排除在外。
start:队列开始值
end:队列结束值
num:生成序列的个数,默认50
endpoint:为True表示包含区间末点
retstep:retstep会改变计算的输出,输出一个元组,而元组的两个元素分别是需要生成的数列和数列的步进差值。
dtype:指定输出的数据类型

6. 
random.rand():返回正态分布数值随机值
random.randn():返回数值取[0,1)的随机值
random.choice():在指定数字中选择生成随机array
例:np.random.choice(['Low','Medium','High'],N).tolist()
random.normal():生成高斯分布的概率密度随机数
loc:概率分布的均值
scale:概率分布的标准差
size:输出的shape,默认为None,只输出一个值
例:nd1 = np.random.normal(loc=1,scale=2,size=2)    #array([-0.46982446, -1.28956852])

df=pd.DataFrame({'A':pd.date_range(start='20210207',periods=N,freq='D'),
                'x':np.linspace(0,stop=N-1,num=N),
                'y':np.random.rand(N),
                'C':np.random.choice(['test1','test2','test3'],N).tolist(),
                'D':np.random.normal(100,10,size=N).tolist()
                })

7. reindex  重新索引
例:df_reindexed=df.reindex(index=[0,2,5],columns=['A','C','B'])

8.设置索引
DataFrame.set_index(keys, inplace=False,drop,append)
keys:列标签或列标签/数组列表,需要设置为索引的列
inplace:默认为False,适当修改DataFrame(不要创建新对象)
drop :True表示删除转为索引的列
append:append表示是否将列附加到现有索引,即不删除原来索引

9.重置索引
sr = pd.Series([10, 25, 3, 11, 24, 6])
# 创建索引
index_ = ['Coca Cola', 'Sprite', 'Coke', 'Fanta', 'Dew', 'ThumbsUp']
# 设置索引
sr.index = index_
result = sr.reset_index()
该 Series.reset_index() 函数已将给定Series对象的索引重置为默认值。它保留了索引,并将其转换为列。

10. 赋值
s=pd.Series([1,2,3,4,5],index=date_range('20210207',periods=6))
10.1 用索引自动对齐新增列的数据
df['F']=s
10.2 按numpy数组赋值
df.loc[:,'D']=np.array([5]*len(df))
[5]*6   返回列表
np.array([5]*6)     返回数组
10.3 用where条件赋值
df[df>0]=-df    注意,这种用法需要df所有列均为数值


11. 运算
11.1.计算一个数列的四分位数
p=pd.Series(np.random.normal(14,6,22))
state=np.random.RandomState(120)    作用类似于随机种子,可以保证每次随机的结果相同
p=pd.Series(state.normal(14,6,22))
print(percentile(p,q=[0,25,50,75,100]))
11.2 计算df某一列的平均值
df.mean(axis=0/1) 默认axis=0,即计算列
df.A.mean()
11.3 将函数应用到DataFrame的每一个数据元素
import pandas as pd
def add(a,b,c):
    return a+b+c

def main():
    data={'A':[1,2,3],
          'B':[4,5,6],
          'C':[7,8,9]}
    df=pd.DataFrame(data)
    print('Original DataFrame\n',df)
    
    df['add']=df.apply(lambda row:add(row['A'],row['B'],row['C']),axis=1)
    print('\nAfter Function DataFrame:')
    print(df)
    
if __name__=='__main__':
    main()
11.4 计算df某一列的和
df.A.sum(axis=0/1,skipna=True/False)    
skipna:计算结果时排除NA /空值

12. df合并
Pandas dataframe.append()函数的作用是:将其他dataframe的行追加到给定的dataframe的末尾,返回一个新的dataframe对象。
语法:
DataFrame.append( ignore_index=False,df1)
ignore_index=True表示不保留追加的df的原索引

13. 分组
“group by” 指的是涵盖下列一项或多项步骤的处理流程:
分割:按条件把数据分割成多组;
应用:为每组单独应用函数;
组合:将处理结果组合成一个数据结构。
df.groupby('A').sum()
df.groupby(['A','B']).sum()

14. 重塑
将numpy数组转换为给定形状的DataFrame
p = pd.Series(np.random.randint(1, 7, 8))
info=pd.DataFrame(p.values.reshape(2,4))


15.透视表
df.pivot_table(data,values,index,columns,aggfunc)   
例:pd.pivot_table(df,values = ['duration','director_facebook_likes'],columns = ['director_name'],index=['color'],aggfunc=[np.sum,np.mean])

16. 将列添加到df
16.1 列表赋值给df
address=["Delhi", "Bangalore", "Chennai" ,"Patna"]
df['address']=address
16.2 Series赋值给df
s=pd.Series([1,2,3,4])
df['S']=s
16.3添加具有特定索引名的行
employees.loc['Emp003'] = ['Sunny', 'Programmer', '2018-01-25', 45]

17. DataFrame迭代
import pandas as pd
import numpy as np

df = pd.DataFrame([{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}])
for index, row in df.iterrows():
    print(row['c1'], row['c2'])
    
18. DataFrame排序
18.1 按标签(索引)排序
sorted_df=df.sort_index(ascending=False/True)   ascending默认True
18.2 按实际值排序
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False)
axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照索引排序,即纵向排序,如果为1,则是横向排序
by:如果axis=0,那么by="列名";如果axis=1,那么by="行名";
ascending:布尔型,True则升序,可以是[True,False],即第一字段升序,第二个降序
inplace:布尔型,是否用排序后的数据框替换现有的数据框
例:df.sort_values(by=["C","B"],ascending=[False,True],inplace=True)

19. 删除df的行
df.drop(['A','B'])

20. 删除df的列
方法一:test_dict_df.drop(['id'],axis=1)
方法二:del test_dict_df.id 

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

推荐阅读更多精彩内容