- df.head()/tail() 查看头/尾5条数据;
- df.info 查看表格简明概要;
- df.dtypes 查看字段数据类型;
- df.index 查看表格索引;
- df.columns 查看表格列名;
- df.values 以array形式返回指定数据的取值;
- list(dt.groupby("字段A")) groupby会把数据框按指定的字段分成几个小块,转化成列表,即可输出各部分的模块展示;
- groupby的聚合函数:
函数名 说明 count 分组中非NA值的数量 sum 非NA值的和 mean 非NA值的平均值 median 非NA值的算术中位数 std、var 无偏(分母为n-1)标准差和方差 min、max 非NA值的最小值和最大值 prod 非NA值的积 first、last 第一个或最后一个非NA值 - groupby的参数:
by:mapping, function, str, or iterable。 用于确定groupby的组。如果by是一个函数,那么会调用对象索引的每个值。如果传递了一个dict或Series,则将使用Series或dict的值来确定组。一个str或者一个strs列表可以通过自己的列传递给group。 axis:轴,int值,默认为0 level:如果axis是一个MultiIndex(分层),则按特定的级别分组。int值,默认为None as_index:对于聚合输出,返回带有组标签的对象作为索引。as_index=False实际上是“SQL风格”分组输出,boolean值,默认为True。 sort:排序。关闭此功能以获得更好的性能。boolean值,默认True。 group_keys:当调用apply时,添加group key来索引来识别片断。boolean值,默认True。 squeeze:尽可能减少返回类型的维度,否则返回一致的类型。boolean值,默认False。
dt.groupby(['版本','级别level','星期','时段'],as_index=False)['供应量'].count(),则可以显示excel数据透视表的功效- dt.columns=['','','']统一赋值重命名,或者使用rename对指定列进行修改
dt.rename(columns={'供需指数':'SDI均值'},inplace=True)- 删除满足条件的行:drop删除一行的时候比较方便
fx1.drop(fx1[fx1['版本']=='进阶版LTO试听课'].index,inplace=True)fx1=fx1.loc[(fx1['版本']!='进阶版LTO试听课'),:]&表示并集,|表示或集,~表示与列出的条件相反,:表示希望保留所有列- 删除满足条件的行后,重置索引:drop删除原索引,inplace替换原文件
fx1.reset_index(drop=True,inplace=True)- 色阶配置:
import seaborn as sns # cmp=sns.light_palette('pink',as_cmap=True) # cmp=sns.color_palette('Pastel1_r',as_cmap=True) # cmp=sns.color_palette('Pastel2',as_cmap=True) cmp=sns.color_palette('Spectral',as_cmap=True) therm=df.iloc[:,:].style.background_gradient(cmap=cmp) #默认是按列设置 therm=df.iloc[:,:].style.background_gradient(cmap=cmp,axis=None) #axis可以全局设置格式
为excel表格配置色阶,可以用iloc选择对哪些区域生效,用pd.ExcelWriter进行保存即可
- 条件格式常用:
- 实现case when操作:
import interval import pandas as pd def data_divide(x): if x in interval.Interval(0, 1, upper_closed=False): return "0)0" elif x in interval.Interval(1, 10, upper_closed=False): return "1)1-9" elif x in interval.Interval(10, 50, upper_closed=False): return "2)10-49" elif x in interval.Interval(50, 100, upper_closed=False): return "3)50-99" else: return "4)100+" df=pd.read_excel(dfpath,dtype={'老师id':object}) print(df.columns) df['qian3']=df['前3个月试听学生数'].apply(data_divide) jihe=df.groupby('qian3')['老师id'].count()
注:Interval函数是数据区间的意思,0≤x≤10 就可以用Interval(0,10)
upper_close是一个参数,默认是左闭右闭, upper_close=False就是右开
- 简单的左连接及列值替换
data=pd.merge(data1,data2,how='left',on='教师id') # print(data[data['是否绑定企微']>0].count()) data.loc[data['是否绑定企微']>0,'是否绑定企微']='是' #匹配上的标记为是,即已绑定企微 data['是否绑定企微'].fillna('未绑定',inplace=True) #未匹配上的空值,填充为未绑定显示
列值替换np.where:语法: df[“column_name”] = np.where(df[“column_name”]==”some_value”, value_if_true, value_if_false)
示例: 这个numpy.where()函数应该写上条件,如果条件为真,后面是值,如果条件为假,则是一个值。现在,我们要把性别栏中的所有 “数字 “改为是, 空值改为未绑定。
掩码替换使用pandas掩码函数
Pandas的掩蔽函数是为了用一个条件替换任何行或列的值。
语法: df[‘column_name’].mask( df[‘column_name’] == ‘some_value’, value , inplace=True )
掩码替换字符串
替换包含指定字符的字符串
语法 : data["列名"].mask(data.列名.str.contains(".*?某字符串"), "替换目标字符串", inplace=True)
- 文件名加入日期:
from datetime import date riqi=date.today().strftime('%Y-%m-%d') writer=pd.ExcelWriter(downpath+'教师企微绑定明细'+riqi+'.xlsx') data.to_excel(writer,sheet_name='明细',index=False) piv.to_excel(writer,sheet_name='完成度') pivw.to_excel(writer,sheet_name='未绑定汇总') writer.save() reset_col(writer)
列宽设置
def reset_col(filename): wb=load_workbook(filename) for sheet in wb.sheetnames: ws=wb[sheet] df=pd.read_excel(filename,sheet).fillna('-') df.loc[len(df)]=list(df.columns) #把标题行附件到最后一行 for col in df.columns: index=list(df.columns).index(col) #列序号 letter=get_column_letter(index+1) #列字母 collen=df[col].apply(lambda x:len(str(x).encode())).max() #获取这一列长度的最大值 当然也可以用min获取最小值 mean获取平均值 ws.column_dimensions[letter].width=collen*1.2+4 #也就是列宽为最大长度*1.2 可以自己调整 wb.save(filename)
pandas基本操作
于 2023-02-16 15:38:44 首次发布
本文介绍了Pandas库在数据分析中的常用方法,包括查看数据头尾、信息概要、字段类型、索引和列名,以及如何进行数据分组、聚合操作。还涉及了数据清洗,如删除行,重命名列,以及使用Seaborn进行颜色配置。此外,文章提到了如何创建Excel色阶和条件格式,以及文件的保存和列宽设置。
摘要由CSDN通过智能技术生成