pandas 数据清洗和分析
程序员文章站
2022-11-05 19:59:13
python是一款非常好的数据分析工具。高*度和丰富的第三方库的支持,对于大部分行业的数据分析非常友好,其中最为常用的数据清洗和分析第三方库是numpy和pandas。常用的xlsx、csv、txt数据读取、合并、缺失值处理、重复值处理、异常值处理以及切片替换等操作都比较简单且容易查询。本文主要介绍一些实际工作中用到的一些方法。1、数据读取和导出经验1)pandas连接mysqlfrom sqlalchemy import create_engine def import_data_mysq...
python是一款非常好的数据分析工具。高*度和丰富的第三方库的支持,对于大部分行业的数据分析非常友好,其中最为常用的数据清洗和分析第三方库是numpy和pandas。常用的xlsx、csv、txt数据读取、合并、缺失值处理、重复值处理、异常值处理以及切片替换等操作都比较简单且容易查询。本文主要介绍一些实际工作中用到的一些方法。
目录
1、数据读取和导出经验
1)pandas连接mysql
from sqlalchemy import create_engine
def import_data_mysql(df,table):
"""
数据导入mysql
"""
engine = create_engine('mysql+pymysql://root:‘密码’@‘地址’:‘端口’/‘库’?charset=utf8')
df1.to_sql(name = table,#表名
con = engine,
if_exists = 'append',
index = False)
return df
# 数据提取为dataframe
def extract_data(sql_text):
engine = create_engine('mysql+pymysql://root:‘密码’@‘地址’:‘端口’/‘库’?charset=utf8')
sql = sql_text
df = pd.read_sql_query(sql, engine)
return df
2)大数据文件读取(应对memory error问题)
通过chunksize数据块
#读取大文件chunksize
df = pd.read_csv(os.path.join(path, filename),encoding='gb18030',iterator=True,sep='|')
def import_chunks_data(df,chunksize):
loop = True
chunkSize = chunksize
chunks = []
index=0
while loop:
try:
print(index)
chunk = df.get_chunk(chunkSize)
chunks.append(chunk)
index+=1
except StopIteration:
loop = False
print("Iteration is stopped.")
return chunks
full_ls = import_chunks_data(df,30000)#输出结果是list
2、迭代的技巧,enumerate、exec和zip
enumerate相当于给每个元素加了索引,即索引与元素一一对应
exec 执行储存在字符串或文件中的Python语句,可以实现对多个dataframe或者变量的执行操作
zip 实现将对象对应的元素打包成元组,然后返回由这些元组组成的列表
from docx import Document
for m,doc in enumerate(document):#从document文件中提取表格数据为dataframe
for table in doc.tables:
df = [['' for i in range(len(table.columns))] for j in range(len(table.rows))]
for i, row in enumerate(table.rows):
for j, cell in enumerate(row.cells):
df[i][j] = cell.text
exec('co'+'_'+str(m)+'.append(pd.DataFrame(df))')
#zip
ls1 = [a,b,c]
ls2 = [d,e,f]
ziped = list(zip(ls1,ls2))
for i in ziped:
print(sum_jihuo(full_jh,i[0],i[1]))
3、pandas数据概览报告
pandas_profiling库可实现对数据概览分析 生成html报告,包含数据分布、缺失值、重复性等内容
import pandas_profiling
profile = raw_data.profile_report(title="oil_data")
profile.to_file(output_file="oil_data.html")
4、dataframe 数据append
for i in unique_Asset:
a = df_merge[df_merge['Asset Number']==str(i)]
ziped = list(zip(a['Latitude'].to_list(),a['Longitude'].to_list()))
for j,dis in enumerate(ziped):
#print(j,dis)
df_distance = df_distance.append(pd.DataFrame({"设备编码":a['Asset Number'].iloc[j],
"巡检结束时间":a['Inspection EndTime'].iloc[j],
"纬度":a['Latitude'].iloc[j],
"经度":a['Longitude'].iloc[j],
"直线距离(m)":round(geodesic(ziped[0],dis).m,2)},index=[0]),ignore_index = True)
5、rank排名
#取排名
full['rank'] = full.groupby(['class_id'])['score'].rank(ascending=False,method='min')
#降序排序,method='min'模式为1224,dense模式1223,max模式为1334
6、等比例分层抽样
DataFrame.sample(n,frac,replace=False)
n 按个数抽样 frac 按百分比抽样 replace 是否放回抽样,默认false为不放回
#单维度整群抽样
label_unique = list(df['省份'].unique()) # 定义标签值域
full = pd.DataFrame()
for i in label_unique:
df_x = df[df['省份']==i].sample(frac=0.3) #30%比例
full = pd.concat([full,df_x],ignore_index=True)
7、条件赋值
#多条件分别赋值:条件一,结果一、条件二、结果二
df['new'] = np.select([condition1,condition2,...],[val1,val2,...],other)
本文地址:https://blog.csdn.net/weixin_42305022/article/details/107450739
上一篇: python指定爬取虎牙图片(简单详细)
下一篇: Keras:Input()函数
推荐阅读
-
网站数据分析之二:了解网站页面的点击情况以及数据的筛选和细分(图文)
-
Python Pandas DataFrame:查询数据or选择数据(selection)之loc,iloc,at,iat,ix的用法和区别
-
Pandas:Series和DataFrame删除指定轴上数据的方法
-
IBM以大数据分析、云计算、移动和社交
-
荐 14天数据分析与机器学习实践之Day02——数据分析处理库Pandas应用总结
-
MySQL的数据类型和建库策略分析详解
-
详解Python数据分析--Pandas知识点
-
云计算的大数据分析和CloudStack
-
JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
-
浅析Facebook对大数据的分析和利用