1、保持数据的原始类型
from numpy import dtype
pd.read_excel(filepath, dtype=dtype)
2、获取列名,并将列名赋值给没有表头的相同数据
df_data_list[1].columns=df_data_list[0].columns
df_data_list[2].columns=df_data_list[0].columns
df_data_list[3].columns=df_data_list[0].columns
3、相同dataframe拼接,向下拼接
df_cat=pd.concat([df_data_list[0],df_data_list[1],df_data_list[2],df_data_list[3]],axis=0)
4、对数据进行转加密MD5
import hashlib
# md5加密
def md5_string(in_str):
md5 = hashlib.md5()
md5.update(in_str.encode("utf8"))
result = md5.hexdigest()
return result
# 对某一列转编码
df_cat['A'] = df_cat['A'].astype('str')
df_cat['A']= df_cat['A'].apply(md5_string)
# 对某一值转编码
str1='123'
md5_string(str1)
5、isin获取数据
pre_df=df.loc[np.isin(days,'列表')]
6、拼接多个excel文件
import glob
xlsx_list = glob.glob('路径' + '*0.xls') #注意路径指的是拼接文件的路径,*是正则表达式
line = 0
for i in range(0, len(xlsx_list)):
filepath = xlsx_list[i]
df_data = pd.read_excel(filepath, dtype=dtype)
# pd.read_csv('ddd.csv')
print(filepath, df_data.shape[0])
line += df_data.shape[0]
if i == 0:
df_data.to_csv('concat.csv', index=False, header=True, mode='a+')
else:
df_data.to_csv('concat.csv', index=False, header=False, mode='a+')
print(line)
7、生成以及保存多重字典的方法
# PycharmProjects/guangxi_data/getTags/getTags.py
cus_tags = {第一个key: {第二个key: "" for 第二个key in group_names} for 第一个key in cus_list}
# 赋值
cus_tags[第一个key][第二个key]=str(cus)
# 保存。先转成dataframe,再转置,直接保存成excel或者csv
df_tags=pd.DataFrame(cus_tags).T
df_tags.to_csv(save_path, index=False)
8、dict保存成csv的方法
def dict2csv(dict_name, file, column_names):
with open(file, 'w', encoding='utf8') as f:
f.write(f"{column_names[0]},{column_names[1]}\n")
for k, v in dict_name.items():
f.write(f"{k},{v}\n")
dict2csv(dict_name, '文件名.csv', ["列名1", "列名2", "列名3"])
9、python实现RFE进行特征选
"""
使用RFE进行特征选择:RFE是常见的特征选择方法,也叫递归特征消除。它的工作原理是递归删除特征,
并在剩余的特征上构建模型。它使用模型准确率来判断哪些特征(或特征组合)对预测结果贡献较大。
"""
from sklearn import datasets
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
testdataset = datasets.load_iris()
x = testdataset.data
y = testdataset.target
model = LogisticRegression()
rfe = RFE(model, 2)##rfe(estimator,n_features_to_select,step) estimator参数指明基模型,n_features_to_select指定最终要保留的特征数量,step为整数时设置每次要删除的特征数量,当小于1时,每次去除权重最小的特征。
rfe = rfe.fit(x, y)
print(rfe.support_)
print(rfe.ranking_)
10、将字符串数据转换成日期,获取日期
from datetime import datetime
import datetime as dt
def getCurYMDay(date): # 把字符串转换成日期
return datetime.strptime(date, "%Y%m%d%H%M%S").strftime('%Y%m%d')
# 将数据中的时间字符串转变成年月日形式的日期
dates=np.array([int(getCurYMDay(str(time))) for time in df['time']])
# 传入一个时间,获取往前几个月前的日期。
pre_day=(datetime.strptime(cur_day,"%Y%m%d").date()-relativedelta(months=month_num)).strftime("%Y%m%d")
# 不需要传时间,当前时间往前推算几个月的时间
pre_day = (datetime.now().date() - relativedelta(months=month_num)).strftime("%Y%m%d")
11、npy文件转化以及索引赋值
import numpy as np
import pandas as pd
trans_matrix = np.load("result/trans_arr.npy", allow_pickle=True)
trans_matrix = pd.DataFrame(data=trans_matrix) # 将ndarray变成dataframe
product_id_cig = np.load("npys/idx_cig.npy", allow_pickle=True).item() # 将字典形式的npy变成原始字典
index1 = trans_matrix.index # 获取dataframe的索引
columns1 = trans_matrix.columns # 获取dataframe的列名
index_list = index1.to_list()
columns_list = columns1.to_list()
# new_index = product_id_cig.values()
new_index_list = list(product_id_cig.values())
trans_matrix.index = new_index_list
trans_matrix.columns = new_index_list
trans_matrix.to_csv("trans_arr.csv",index=True, header=True)
12、替换数据中某些字段的部分
gn = [g[:-3] if g.endswith('XXXX') or g.endswith('XXXX') else g for g in df['good_name']]
df['good_name'] = gn
13、获取数据文件的形式并读取数据
if data_path.endswith(".csv"):
df=pd.read_csv(data)
elif data_path.endswith(".xls") or data_path.endswith(".xlsx"):
df = pd.read_excel(data)
14、获取数据中的非空项
def getCurYearMonth(date):
return datetime.strptime(date, "%Y%m%d%H%M%S").strftime('%Y%m')
def formatTime(date):
return datetime.strptime(date,"%Y-%m-%d %H:%M:%S").strftime("%Y%m%d%H%M%S")
def getCurYMDay(date): # 把字符串转换成日期
return datetime.strptime(date, "%Y%m%d%H%M%S").strftime('%Y%m%d')
def getCurMonth(date): # 把字符串转换成日期
return datetime.strptime(date, "%Y%m%d%H%M%S").strftime('%m')
df["certifyNumber"] = pd.to_numeric(df["certifyNumber"], errors='coerce')
#日期格式化
df['time']=[formatTime(time) for time in df['time']]
# 过滤金额小于0的
df = df.loc[df['money'] >=1, :]
# 过滤商品数量小于1的
df = df.loc[df['good_num'] >=1, :]
# 筛选userID称非空项,剔除异常值。
df = df.loc[~df['userID'].isnull(), :]
文章来源地址https://www.toymoban.com/news/detail-511868.html
文章来源:https://www.toymoban.com/news/detail-511868.html
到了这里,关于python:小技巧收集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!