[工作必备]pandas数据分析处理52个常用技巧(上)

简介: [工作必备]pandas数据分析处理52个常用技巧

python中的第3方工具包pandas功能强大,
日常工作中比如筛选、排序、计算、透视、vlookup、分类汇总等excel常用操作用pandas也能轻松实现;
本文精心整理的pandas数据处理与分析的52个技巧, 100多个知识点, 掌握这些,处理数据不再是难事!

导入工具包

# pandas 和numpy是两个基础的工具包
import numpy as np
import pandas as pd
# matplotlib seaborn是作图工具包
import matplotlib.pyplot as plt
import seaborn as sns
# 通过os设置默认路径
import os
os.chdir('C:/Users/用户/Desktop/')  # 桌面的路径
# 图表中文显示问题
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
# 不显示预警
import warnings  
warnings.filterwarnings('ignore')

读取excel数据

# 读取文件
df = pd.read_excel('文件.xlsx')
# 读取文件同时筛选需要的列
df = pd.read_excel('文件.xlsx')[['','']] # 读取并筛选几列
# 读取特定的工作表
df = pd.read_excel('文件.xlsx',sheet_name='明细') # 读取某个sheet表
# with方法读取
with pd.ExcelFile('path_to_file.xls') as xls:
    df1 = pd.read_excel(xls, 'Sheet1')
    df2 = pd.read_excel(xls, 'Sheet2')

读取csv或者txt

# 分隔符: \s 表示空白字符; \s+多个空白字符; \r回车; \n换行; \t水平制表符; \v垂直制表符
df = pd.read_csv('文件.txt',sep='\s+',error_bad_lines=False)

批量读取同一文件夹下文件方式1

for root, dirs, files in os.walk('.',topdown=False):
    print(files)
num = len(files)   # 获取文件个数
data = pd.DataFrame()  # 定义一个空的dataframe
# 遍历所有文件
for i in range(num):
    datai = pd.read_excel('./%s' %files[i])   
    datai_len = len(datai)
    data = data.append(datai)   # 添加到总的数据中
    print('文件%i列, 第%i个表,读取%i行数据,名称:%s'%(len(data.columns),i,datai_len,files[i]))     # 查看是否全部读取,格式是否出错
data.reset_index(drop=True,inplace=True)

批量读取同一文件夹下的文件方式2

# 导入工具包
import pandas as pd
import numpy as np
import os
# 路径
path = 'd:/文件路径/'
# 文件列表
files = []
for file in os.listdir(path):
    if file.endswith(".csv"):
        files.append(path+file)
# 定义一个空的dataframe
data = pd.DataFrame()  
# 遍历所有文件
for file in files:
    datai = pd.read_csv(file,encoding='gbk')
    datai_len = len(datai)
    data = data.append(datai)   # 添加到总的数据中
    print('读取%i行数据,合并后文件%i列, 名称:%s'%(datai_len,len(data.columns),file.split('/')[-1]))     
    # 查看是否全部读取,格式是否出错
# 重置索引    
data.reset_index(drop=True,inplace=True)

批量读取同一文件夹下得文件方式3(当txt文件不规范,读取会丢失数据或文件太大时)

# 循环读取数据
n = 1
for file in files:    
    with open(file, 'r',encoding='gbk') as f_input:
        lisi= []
        for line in f_input:
            lisi.append(list(line.strip().split('|')))
    datai = pd.DataFrame(lisi)
    datai2 = guolv(datai)
    data = data.append(datai2)
    print('读取第%i个文件,件名%s,文件%i行,文%i列.处理后文件%i行,%i列' %(n,file,datai.shape[0],datai.shape[1],datai2.shape[0],datai2.shape[1]))
    n = n + 1

文件导出,放在同一工作簿

writer = pd.ExcelWriter('文件.xlsx')
for name , group in df.groupby('名称'):
    group.to_excel(writer,sheet_name=name,index=False)

文件导出, 分组导出放在同一工作簿

writer = pd.ExcelWriter('文件.xlsx')
for name , group in df.groupby('名称'):
    group.to_excel(writer,sheet_name=name,index=False)

文件导出, 分组导出, 放在不同工作簿

for name , group in df.groupby('名称'):
    group.to_excel(name+'.xlsx',index=False)

获取当前时间

import time
tim = time.strftime("%Y-%m-%d%H%M%S", time.localtime())

保存图片分辨率设置

plt.savefig('名称.png',dpi=150)

数据查看

df.describe()   # 描述统计
df.info()    # 基本信息
df.dtypes    # 列格式类型
df.head(2)    #前n行
df.tail(2)    #后n行
df.shape    #维度
df.index  #索引
df.columns  #列名
df.sample(10)   #随机抽样
df.resample()  #随机抽样

行列处理(删除,排序)

# 删除列
del df['变量名']
df.drop('变量名',axis=1,inplace=True)
# 删除行
df.drop('c')
# 更改列名
df.columns= ['var1','var2','var3']  # 列名的个数 = 字段个数
df.rename(columns = {'名称前':'名称后'},inplace=True)   # columns 不能少
# series中改列名
s.rename('名称',inplace=True)
# 调整列的顺序
df1 = df1[['var1','var2','var3']]
# 调整行的顺序
df2 = df1.reindex(['a','b','c','d','e']) # 返回一个新的DataFrame,按新的索引进行排序

缺失值(查看,替换,计数)

# 判断是否是缺失值
df.isnull()  #不能省略括号
df.notnull()
# 计算缺失值个数
s.isnull().value_counts()
# 每列缺失值个数
df.isna().sum()  # 缺失值个数
# 填充缺失值
df['A'].fillna('缺失数据',inplace=True)  
data1.fillna(method='pad')   # 类似于excel中用上一个单元格内容批量填充
# 删除指定列包含缺失值的行
data.dropna(subset=["C"],inplace=True)    # []不能少
data.dropna(how="all")   # 删除全为空的行
data.dropna(thresh=2)    #删除有效数据小于2的数据
# 缺失值个数并排序
df.isnull().sum().sort_values(ascending=False).head()

重复值(查看,删除)

# 不重复项
df['A'].unique()  
df['A'].nunique() #查看不重复值个数
df['A'].unique().tolist()   # 转list 
df['A'].value_counts()  # 计数
# 去重
set(data2['名称'])
# 查看重复项,返回True False
df.duplicated()  
# 查看重复的数据
data4 = data3[data3.duplicated(subset='var1',keep=False)]  
# 删除重复项
df.drop_duplicates(['var'],inplace=True)
# 按两列去重
data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)  
# 分组计算不重复项个数
result = df.groupby(['var1','var2']).agg({'var3':'nunique','var4':['min','max']})

修改格式(格式转换, 百分比, 格式判断)

# 改变列的格式(文本型数值改成数值型数值)
df['var1'] = df['var1'].astype('int')  # errors = 'ignore'
df['var1'] = df['var1'].astype(np.float)
# 多列转换
df[['user_id','merchant_id','coupon_id']]=df[['user_id','merchant_id','coupon_id']].astype(str)  
df.infer_objects()  # 根据数据特征自动转换
# 百分比格式
data['B_per%'] = data['B_per'].apply(lambda x: '%.2f%%' % (x*100))
# 判断格式,是否为字符串
data['var'].apply(lambda x:isinstance(x,str))
相关文章
|
9天前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
105 71
|
8天前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
106 73
|
2月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
89 0
|
5天前
|
存储 数据采集 数据可视化
Pandas数据应用:医疗数据分析
Pandas是Python中强大的数据操作和分析库,广泛应用于医疗数据分析。本文介绍了使用Pandas进行医疗数据分析的常见问题及解决方案,涵盖数据导入、预处理、清洗、转换、可视化等方面。通过解决文件路径错误、编码不匹配、缺失值处理、异常值识别、分类变量编码等问题,结合Matplotlib等工具实现数据可视化,并提供了解决常见报错的方法。掌握这些技巧可以提高医疗数据分析的效率和准确性。
46 22
|
10天前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
42 5
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
52 2
|
2月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
60 2
|
2月前
|
数据采集 数据可视化 数据挖掘
Python数据分析:Pandas库实战指南
Python数据分析:Pandas库实战指南
|
2月前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南