概述
pandas是一个数据分析的神器,类似excel,但是功能更加强大,便捷。使用思想类似数据库处理,是对表格的处理,比如表格的增删改查,表格排序,条件搜索等。
其中DataFrame概念等同于表格,Series则是列。
本文以下内容参考了作者数据不吹牛的知识,融合其中4篇文章,看不懂我的,请看原文:
https://blog.csdn.net/SeizeeveryDay/article/details/100430621
https://blog.csdn.net/SeizeeveryDay/article/details/100428758
https://blog.csdn.net/SeizeeveryDay/article/details/100428923
https://blog.csdn.net/SeizeeveryDay/article/details/100550466
基础
建表
import pandas as pd
df = pd.read_csv("../xxxxx.csv",engine='python') #读csv
df = pd.read_excel('xxx.xls') #读excel
df.head(5) #打印前5行,不填为5
df.tail(5) #打印后5
df.info() #展示表格信息,类型,数量等
df.to_csv('xxx.csv')
df.to_excel('xxx.xlsx') #存储
df.describe() #答应描述信息,count,mean,std等
#增删改差
df['新增的列'] = a(数值列表)
df.drop('新增的列', axis =1, inplace=True) #删除,inplace代表是否替换源数据
df[['列名','列名2']]
df['某列']=a(数值列表)
df = df['列'].str.replace('\n','') #替换
df = df['列'].str.replace('%','').astype(float) #替换后改变数值类型
df['日期']= pd.to_datetime(日期列表,可是str型) #时间类型,时间类型直接进行加减,自支持
索引
#选取1-2行,3-4列,用法同python list
df.iloc[1:2, 3:4]
#筛选
df.loc[df['列'] == '值', :] #中间写条件即可
df.loc[df['列'].isin(['a','b']), :]
df['列'].mean() #均值 std 标准差 median 中位数 max min
表合并 级联
df = pd.concat([d1,d2,d3]) #纵向合并 枚举联结 2行x2行x3行 = 12行
#用索引联结
df = pd.merge(left = d1, right =d2, left_index = True, ringht_index = True, how ='inner')
# 假设姓名是单独的一列值,且需要根据姓名进行匹配,那就需要用“left_on = '姓名',right_on = '姓名'
# how是指定连接方式,这里用的inner,表示我们基于姓名索引来匹配,只返回两个表中共同(同时出现)姓名的数据。
下面详解一下inner还涉及到的其他参数——left,right,outer。
表处理
#删除空值
df.dropna()
#去重 根据某列去除,可不填参数,去除重复
df.drop_duplicates( subset='列')
#条件查询
df.loc[(条件1) & (条件2 =),:] # 与用 & 或用 |
#排序
df = df.sort_values('lie', ascending = False)
#分组
df = df.groupby('')
df = df.groupby('')['选择显示的列'].sum() #max...
#切分
apply
func 是一个函数 常用的是 max,min,len
案例:取各省份第三名的销售额
def get_third(x):
if len(x) <= 1:
return x.iloc[0,:]
else:
return x.iloc[2,:]
df.grpupby('省份')['列名'].apply(get_third)