pandas对于文件数据基本操作,数据处理常用
基本操作
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple (安装包) 清华安装
例如
pip3 install --index-url https://pypi.douban.com/simple pandas
国内的其他镜像源
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
数据导入
# 以下两种效果一样,如果是网址它会自动下载数据到内存
import pandas as pd
df = pd.read_excel('https://www.gairuo.com/file/data/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在 notebook 文件同一目录下
# 如果是 csv 的话使用 pd.read_csv() ,还支持很多类型的数据读取
但是有时候一个表里面会有很多个表单例如下面情况
这个时候我们需要用到这个
df = pd.read_excel('a.xlsx',sheet_name= 'Sheet1')
#当sheet_name= None即读取全部数据
保存数据
df.to_excel('team-done.xlsx') # 导出 excel
df.to_csv('team-done.csv') # 导出 csv
加载数据集
df.shape # (100, 6) 查看行数和列数
df.info() # 查看索引、数据类型和内存信息
df.columns # 列名
#上面的比较常用
df.describe() # 查看数值型列的汇总统计
df.dtypes # 查看各字段类型
df.axes # 显示数据行和列名
#常用查看数据组成情况的
df["列名"].value_counts()
#查看缺失值
df['店面情况'].isnull().sum()
#查看重复值
df['单号详细'].duplicated()
数据基本处理
类型处理
类型转换
#类型转换
df[a] = df[a].apply(lambda x: float(x))
独热编码
#独热编码,i为列名
total_df[i] = LabelEncoder().fit_transform(total_df[i])
删除(按照条件,索引,列行)
#删除NaN值
df.dropna(axis=1)
df.dropna(axis=0,how="all",inplace=True)#全部为nan才删除
#有一个就删除此行删除空值
df.dropna(axis=0, how='any', inplace=True)
#参数axis为0表示在0轴(列)上搜索名为“姓名”的对象,然后删除对象“姓名”对应的行。
data.drop("姓名",axis = 0)
#参数axis为0表示在1轴(行)上搜索名为“姓名”的对象,然后删除对象“姓名”对应的列。
data.drop("姓名",axis = 1)
#删除data中索引为0和1的行
data.drop(index = [0,1])
#按照条件删除
df.drop(df[df['学历要求']==i].index)
空数据填充
填充前一个值
#数据填充
train_data.fillna(method='pad', inplace=True) # 填充前一条数据的值
train_data.fillna(method='bfill', inplace=True) # 填充后一条数据的值
df表处理
#pandas转置
df = df.T
合并两个DataFrame
newdf = pd.concat(A,B],axis=1)
newdf.columns=[Aname,Bname]#赋予列名
排序
# 按照指定值排序
df['点菜明细'].sort_values('消费金额', ascending=False)
数据提取
#提取所有数据
data.iloc[:,:]
# 提取第0、1行,第0、1列中的数据
data.iloc[[0,1],[0,1]]
提取A列中数字为0,且B列中数值为1所在行的数据
data.loc[(data['A']==0) & (data['B']==1)]
#出现名字-次数
labs = df["name"].value_counts()
数据处理函数
函数
合并两个文件csv,保存为新的csv
excel的话改一下就好了,这里后面演示类似的
def hebingcsv(A,B,writer_file)
"""
A文件路径
B文件路径
writer_file输出的文件路径,若是excel则修改csv为excel即可
"""
A= pd.read_csv(A)
B= pd.read_csv(B)
dfs=[]
dfs.append(A)
dfs.append(B)
total_df = pd.concat(dfs)
total_df.to_csv(writer_file, index = False)
将文件目录下所有的excel合并
csv的话改一下就好了
import os
def codir_excel(path,writer_file):
"""
path文件路径
writer_file输出的文件路径,若是csv则修改excel为csv即可
"""
dfs=[]
for file_name in os.listdir(path):
Path_excel = os.path.join(path,file_name)
df = pd.read_excel(Path_excel)
dfs.append(df)
total_df = pd.concat(dfs)
total_df.to_excel(writer_file, index = False)
将两个列表合成csv格式
def helist(A,B,Aname,Bname):
"""
A、B要合并的列表
Aname、Bname合并列表的列名
"""
newdf = pd.concat([pd.DataFrame(A),pd.DataFrame(B)],axis=1)
newdf.columns=[Aname,Bname]
return newdf
#示范
helist(A,B,Aname,Bname).to_excel(writer_file, index = False)