0. 目录
- 查看基本情况
- 基本处理
- 筛选查询
- 合并分组
- 透视
1. 查看数据
df.head() #前10个数据
df.info() # 查看基本信息、数据类型和内存信息
df.tail() #尾数
df.describe() #统计信息
df.index #索引
df.columns #查看列
df.count() # 计数
df.shape #查看DataFrame的维度。
df.index # 查看index
df.dtypes #查看各列格式2. 数据清洗
缺失值、格式、排序、去重、index、缺失值、错误值、rename、Nan、sort、替换
2.1常用清洗方法
- [[df['col'].unique()]] #提取唯一值
- df.columns = ['a','b','c'] # 直接重命名列
- df.dropna() # 删除所有包含空值的行
- df.fillna(0) #用0替换DataFrame对象中空值
- s.astype(float):将Series的数据类型更改为Float类型
- s.replace(1,'one'):用one替代所有等于1的值
- cj_in1['货号']= cj_in1['货号'].str.replace('-','/')
- s.replace([1,3],['one','three']),用one替代1,three替代3
- df.rename(columns={'old_name':'new_name'}):选择型更改列名
- df.set_ind('columns_one'):更改索引列
- df.rename(index=lambda x:x+1):批量重命名索引
- df.drop('a',axis) 指定a列,把每行都删除
- df_res.drop(columns=['订单量'],inplace=True) #inplace 替换type
df['month'] = df['order_dt'].astype('datetime64[M]')
df.head()缺失值
df.fillna()
df.dropna()
df['col'].fillna(df['col'].mean())
大小写转换
tb.str.lower()
tb.str.upper()
tb['货号']=tb['货号'].str.upper() #转为大小,小写是tb[list].str.lower()
#设置首字母大写
capitalize()
替换
replace()
str.replace("a","")
cj_in1['货号']= cj_in1['货号'].str.replace('-','/') #替换字符
日期格式转换 :pd.to_datetime导入excel数字转日期
cj_in['记账日期']= pd.to_datetime(cj_in['记账日期'], unit = 'D',origin='1899-12-30')
df['date']=pd.to_datetime(df['date']) #转换为日期格式
# 只提取日期,去掉具体时间
`df.dt.date`
copy()
df2 =df1.copy()
如果df2=df1,那么,df2的变化也会引起df1的变化,因为df2=df1, 实际上只是指定了一个指针;为了解决这个问题,引入copy(0)
替换重命名df.rename
df1.rename(columns={'Unnamed: 2':'金牌数','Unnamed: 3':'银牌数',
'Unnamed: 4':'铜牌数'},inplace=True)- 删除数据drop()
g_two_score.drop("英语",axis=1)##删除“英语”这一列
g_two_score.drop(columns=["数学"],index=[0,1])
#删除数学这一列,和0,1行,这里,我们没有设index的名称,所以是自动生成的0,1,2,3,4
2.2 索引与排序
2.2.1一般排序
- df.sort_values()
- df.index_sort()
df.sort_values(by="货号", ascending=True)
df.index_sort()2.2.2自定义排序
使用CategoricalDtype模块
from pandas.api.types import CategoricalDtype行自定义排序CategoricalDtype
# 层级调整:修改层级顺序,排序
res = res.swaplevel(axis=1) # 调换2个层级的顺序
res = res.rename_axis(['仓库','指标'],axis=1) #修改层级明细
res = res.sort_index(level=0,axis=1) # 对第一层列进行默认排序,2.2.3设置索引df.set_index
df.set_index
df.set_index('列名',inplace= True)
df.set_index(['class','name'])
重置索引reset_index
df.reset_index(drop=True)