Pandas常用知识点总结

pandas是python中高性能的数据分析库。为数据的统计分析带来了极大的便利。
本文以pandas中最常用的数据结构DataFrame为主,总结常用知识点,如增删改查,分组统计等等。

创建空DataFrame

df=pd.DataFrame()

判断DataFrame是否为空

df.empty

DataFrame去重

df.drop_duplicates()

替换DataFrame中指定字符串

df.replace({"2003-05-10": "2008-08-08"}, regex=True, inplace=True)

填充DataFrame中Nan

import pandas as pd
data=[[101,90],[102,99],[103,]]
df=pd.DataFrame(data=data,columns=['id','score'])
df.fillna("未知", inplace=True)

重塑DataFrame

import pandas as pd
data=[['101',90,'2003-05-10'],['102',99,'2003-05-12'],['103',105,'2003-05-11']]
df=pd.DataFrame(data=data,columns=['id','score','dt'])

#重塑 以dt作为index,id的值作为列名,去填充对应score的值
print df.pivot(index='dt', columns='id', values='score').reset_index()

DataFrame每列数据类型

df.dtypes

DataFrame行数列数

df.shape

DataFrame列名

df.columns.values

修改列名

df.rename(columns={'id':'studentID', 'score':'studentScore'}, inplace=True)

删除列

df.drop(['id'], axis=1)

增加列

df['id2']= pd.Series(range(df.shape[0]))

某列转换成int类型

df['id'] = df['id'].astype('int')
或
df['id']=df['id'].map(lambda x:int(x))

选出某列转List

df["id"].values.tolist()

对每列求和

df.loc['合  计'] = df.apply(lambda x: x.sum())
注意:需要注意map()与apply()的区别,map中的函数作用于Series中的每一个元素,而apply中的函数作用于DataFrame一列或一行。

按多列排序

df.sort_values(['colNameA','colNameB'], ascending=False)

某列最小值

int(df[['score']].min())

Union ALL

pd.concat([df1,df2])

Left/Right/Inner/Outer Join

import pandas as pd
data=[['101',90,'2003-05-10'],['102',99,'2003-05-10'],['103',105,'2003-05-11']]
df=pd.DataFrame(data=data,columns=['id','score','dt'])

data2=[('101','1'),('102','0')]
df2=pd.DataFrame(data=data2,columns=['id','sex'])

#left join
left_join_df=df.merge(right=df2, how="left", on="id")

#right join
# right_join_df=df.merge(right=df2, how="right", on="id")
# 或
right_join_df=df.merge(right=df2, how="right", left_on="id",right_on="id")

#inner join
inner_join_df=df.merge(right=df2, how="inner", left_on="id",right_on="id")

#outer join
outer_join_df=df.merge(right=df2, how="outer", on="id")

总结:left join类似于SQL的left join。如A left join B,产生A的完整集,B中没有匹配上的以nan代替。同理 right join、inner join、outer join。
pandas中DataFrame中merge,默认是inner join。

筛选数据

#这些操作类似于Sql中的where条件。
import pandas as pd
data=[['101',90,'2003-05-10'],['102',99,'2003-05-10'],['103',105,]]
df=pd.DataFrame(data=data,columns=['id','score','dt'])

#且
print df[(df['id'].isin(['101','102']) & (df['score']==90))]
#取反
print df[~df['id'].isin(['101','102'])]
#不等式
print df[df['score']>=99]
#过滤掉非空
print df[df['dt'].notnull()]

分组排序聚合

import pandas as pd
data=[
    (1,80,90,1,2),
    (2,60,80,1,2),
    (3,70,90,1,3),
    (4,90,80,1,3),
    (5,60,90,1,3),
    (6,50,80,2,3),
    (7,80,90,2,3),
    (8,70,70,2,1),
    (9,90,90,2,1),
    (10,80,90,2,1)
]
df=pd.DataFrame(data=data,columns=['id','language','math','grade','class'])

#分组求和---按grade,class分组,对language,math分别求和
print df.groupby(['grade','class'])['language','math'].sum().reset_index()

#分组排序求TopN----按grade,class分组,取每组math最大的topN

print pd.concat([subGroup.sort_values(['math'],ascending=False).head(2)
   for subGroupName,subGroup in df.groupby(['grade','class'])])

List转DataFrame

List-Tuple转DataFrame

data=[(101,90),(102,99),(103,99)]
df=pd.DataFrame(data=data,columns=['id','score'])

List-List转DataFrame

data=[[101,90],[102,99],[103,99]]
df=pd.DataFrame(data=data,columns=['id','score'])

List-Dict转DataFrame

data=[{'id':101,'score':90},{'id':102,'score':99},{'id':103,'score':99}]
df=pd.DataFrame(data=data)

excel转DataFrame

df=pd.read_excel(io="excelPath.xlsx", sheetname="sheetName")

Json、Csv与DataFrame互转

Csv文件转DataFrame

#注:读取Tsv文件,将分割符换成\t即可。
df=pd.read_csv(filePath,sep=',',names=['colNameA','colNameB'...])

Json文件转DataFrame

df=pd.read_json(filePath, lines=True)

DataFrame保存成Csv文件

df.to_csv("csvResult.csv",index=False,header=True,sep=',',encoding='utf-8-sig')

DataFrame保存成Json文件

df.to_json(path_or_buf="jsonData.json",orient='records', lines=True)

Sql执行结果转DataFrame

df=pd.read_sql(sql=sql,con=conn)
  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas重点知识点主要包括以下几个方面: 1. Pandas与NumPy的关系:Pandas是基于NumPy实现的,它们互为补充。Pandas的核心数据结构与NumPy的ndarray相似,但Pandas在数据处理方面更强大和智能,而NumPy更基础和强大。 2. 数据分析中的Data Frame操作:Data Frame是Pandas中最常用的数据结构,类似于Excel中的表格。对Data Frame进行各种操作是进行数据分析的基础操作,比如数据筛选、排序、切片等。 3. 分组聚合:利用Pandas进行数据分析时,经常需要根据某些特征将数据分组,并对每个分组进行聚合计算,如求和、计数、均值等。这种分组聚合操作可以帮助我们快速统计和分析数据。 4. Series:Series是Pandas中的一维数据结构,类似于Excel中的列。它由一组数据和与之关联的索引组成,可以对数据进行标签化的访问和操作。 总结来说,Pandas重点知识点包括Pandas与NumPy的关系、Data Frame的操作、分组聚合以及Series的使用。掌握这些知识点可以帮助你更好地进行数据分析和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Pandas知识点超全总结](https://blog.csdn.net/Itsme_MrJJ/article/details/126101002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值