dsoft2 = data1.loc[(data1['程'] == "轻") | (data1['程'] == "中")]
设置x下标
plt.xticks(np.arange(24))

特定列 排序
print(data.sort_values(axis = 0,ascending = True,by = '停留时间'))

plt.savefig(name+".jpg")

#中文
myfont = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf', size=14)
import seaborn as sns
sns.set(font=myfont.get_name()) file = open(".xlsx", "rb")
data = pd.read_excel(file, sep="\t")
data = data.loc[(data['时间'] > 0) & (data['时间'] < 4320)]
drop_feat = ["编号",..., "状态"]
feat = [i for i in data.columns if i not in drop_feat]
data = data[feat]
print(data.isnull().sum() / len(data)) #看缺失比例,字段 # 读取文档以及,过滤填充数据, 筛选数据
# ddie = data.loc[(data['等级'] == "Ⅲ") | (data['等级'] == "Ⅳ")]
data = ddie.groupby(['时段', '分类']).mean().reset_index()
dataForsize = ddie.groupby(['时段', '分类']).size().reset_index() dmean1 = data.loc[(data['类'] == '') | (data[''] == '')]
dsize1 = dataForsize.loc[(dataForsize['类'] == '统') | (dataForsize[''] == '')]
dmean1 = dmean1.groupby(['挂']).mean() # 分组后 平均
dsize1 = dsize1.groupby(['挂'])[0].agg(sum) # 计 分组后 求和 # xx = list(range(0, 24)) 技巧得 x轴 连续坐标
y1 = dmean1["时间"]
x1 = y1._index._data  技巧 对应的 索引 不连续坐标 , 方法论:debug查 属性 plt.figure(figsize=(16,5))
plt.plot(x1, y1,color='blue')
plt.plot(x3, y3,color='red')
for i, (_x, _y) in enumerate(zip(x1, y1)):
plt.text(_x, _y, dsize1[x1[i]], color='blue', fontsize=12) # 关键 dsize1[x1[i]] 是从连续的i找不连续的x[i]的坐标来得到不连续的y值
plt.xticks(np.arange(24))
label = [ "其它"]
plt.legend(label, loc=0, ncol=2)
plt.xlabel(" 0-23小时")
plt.ylabel("时长")
plt.show() ------------------

==========数据集 读取 处理 合并
==========查看信息 统计>>分布
==========数据应用/建模 重要工作 看异常点,缺省值 处理字段(特征),处理脏数据 方法:查看>>获取>>处理
==========转类型,转数字 astype,Encoder,map,one-hot,pivot
==========生成相关图,分析特征图 查看数据均衡分布程度及处理:生成模拟数据:上采样,下采样 ;box-cox变换 计距离,皮尔逊

==========数据集 读取 处理 合并
data = pd.read file
data = pd.concat([a, b],ignore_index=True) Concatenate英[kɒn'kætɪneɪt DataFrame objects
data = copy.deepcopy(data[[ 'c1', 'c2']]) # data[[]] 双括号区别:多列切片
data1 = pd.concat([data1,data[""]])
data = pd.merge(data,data1,on="")

df2['col4'] = ['cnn','rnn'] # 列扩充
df2.append(pd.DataFrame({' # 行扩充
dfb.join(df_a,how='outer') # 合并DataFrame,并集

default,concat是在axis=0工作,最终产生一个‘更多列’的series,若传入axis=1结果就变成一个dataframe.

==========查看信息 统计>>分布
print(data.isnull().sum()/len(data))
print(data._info_axis) print(data.axes) axis英[ˈæksɪs]美[ˈæksɪs] 轴,轴线 axes也是轴
print(data.shape)
print(data.dtypes type(obj)) astype
print(data.head(5))
print(data.info)
print(data[''].describe())

print(dataframe.index,dataframe.columns)
图看值分布
data.boxplot(column=[''],return_type='axes')
查多少种取值(看分布)
data[].value_counts() len(data[''].unique())
print(len(data['c'].value_counts())) #len(data['c'].value_counts()) 有了count为什么还要len

排序看范围
b = pd.DataFrame(a).sort_values('').reset_index(drop=True)

==========数据应用/建模 重要工作 看异常点,缺省值 处理字段(特征),处理脏数据 方法:查看>>获取>>处理
data.apply(lambda x: sum(x.isnull()))
apply applymap

data[]和loc的区别:百度:pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
# 根据索引查看数据 dataframe.loc['a'] # 索引为a这一行的数据
data[]是 切片 一列的行做
data[[]]是 多列切片

for column in data.columns: # 重置为null , o ,
data[column] =
data[column].apply(lambda x: np.nan if x ==" "else x)
lambda x: 1 if pd.isnull(x) else 0
data[""].apply( lambda x: 0 if str(x)=="#VALUE!" else x)
data[''].apply( lambda x: 1 if pd.isnull(x) else 0)

#缺省值不多,用均值代替 keypoint
data.fillna(0,inplace=True)
data[''].fillna(0, inplace=True)
#找中位数去填补缺省值(因为缺省的不多)
data[''].fillna(data[''].median(),inplace=True)

data.dropna(inplace=True) //通常情况下删除行,使用参数axis = 0,删除列的参数axis = 1,通常不会这么做,那样会删除一个变量。 记忆 0,1,行列
data.drop(drop_feat,axis=1,inplace=True)
len(data['col'].unique())
data.drop('col',axis=1,inplace=True)

==========转类型,转数字 astype,Encoder,map,one-hot,pivot

for column in le_columns :
if column not in drop_feat:
data[[column]]=data[[column]].astype("int64")
data[[column]]=data[[column]].astype("str")

Encoder
sub_data["measures"],measures_dict = label_encode(sub_data,"measures")

def label_encode(data,column_name):
  data[column_name] = data[column_name].astype(str)
  data[column_name].fillna("空",inplace=True)
  dummy_encode = pd.get_dummies(data[column_name])
  column_num = range(len(dummy_encode.columns))
  column_dict = {}
  for i in column_num:
  column_dict[dummy_encode.columns[i]] = i
  #data[column_name] = data[column_name].apply(lambda x:column_name+"_"+x)
  data[column_name] = data[column_name].map(column_dict)
  return data[column_name],column_dict

数值编码
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
var_to_encode = ['Device_Type','Source']
for col in var_to_encode:
data[col] = le.fit_transform(data[col])

weekday_map = {"星期一":1,"星期二":2,"星期三":3,"星期四":4,"星期五":5,"星期六":6,"星期日":7}
season_map = {"春":1,"夏":2,"秋":3,"冬":4}
gender_map = {"男":1,"女":2}
sub_data["sex"]=sub_data["sex"].map(gender_map)
data[''] = data[''].map(lambda x: split_word(x,stopwords))

pandas使用
get_dummies 进行one-hot编码
pivot 行列转
data1 = data.pivot(index="", values="1", columns="").reset_index()

==========生成相关图,分析特征图 查看数据均衡分布程度及处理:生成模拟数据:上采样,下采样 ;box-cox变换 计距离,皮尔逊
data1 = data[["a","b"]]
corrmat = data1.corr()
plt.subplots(figsize=(12,9))
sns.heatmap(corrmat,vmax=0.2,square=True)

其它技巧
生成日期范围
pd.date_range('4/1/2012','6/1/2012')

numpy
数组转置和轴对换 区别是什么:简单的转置就是轴对换,那复杂的呢
reshape dot T transpose
有集合运算
有线代的操作函数

处理,过滤 填充 缺失数据
dropna fillan isnull notnull

逐块读取大文件,
chunker = pd.read_csv('filepath',chunkssize=100)
for a in chunker:
读几行
re = pd.read_csv('filepath',nrows=5,skiprows,na_values='',converters='映射成字典')

重塑reshape 轴向旋转pivot
stack 将数据的列转为行
unstack 将数据的行转为列
duplicated() 重复行
重命名轴索引 rename

_data["line"] = _data.apply(lambda data_row: change_str(data_row))
_detail_data["费用"] = _detail_data['门诊号'].apply(lambda x: change_patient_str(x))
前者是整行为参数,后者为单列

http://pandas.pydata.org/pandas-docs/stable/merging.html

pd.concat  连接,以索引与列引为主,比较‘直接拼接’    多用于,竖向多行合并   verify_integrity=True    左右拼接axis=1     ignore_index=True 【Clear the existing index and reset it】

pd.merge  和join  像sql 的join 左右连接多,以某个key为对应键  多用于,横向多列合并

https://blog.csdn.net/zutsoft/article/details/51498026merge  通过键拼接列

concat  可以沿着一条轴将多个对象堆叠到一起

concat方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种)。
与数据库不同的时concat不会去重,要达到去重的效果可以使用drop_duplicates方法
 

数据清理,预处理 pandas dataframe 操作技巧 总结的更多相关文章

  1. 如何通过Elasticsearch Scroll快速取出数据,构造pandas dataframe — Python多进程实现

    首先,python 多线程不能充分利用多核CPU的计算资源(只能共用一个CPU),所以得用多进程.笔者从3.7亿数据的索引,取200多万的数据,从取数据到构造pandas dataframe总共大概用 ...

  2. Python pandas DataFrame操作

    1. 从字典创建Dataframe >>> import pandas as pd >>> dict1 = {'col1':[1,2,5,7],'col2':['a ...

  3. python pandas dataframe 操作记录

    从数据看select出数据后如何转换为dataframe df = DataFrame(cur.fetchall()) 如何更改列名,选取列,进行groupby操作 df.columns = ['me ...

  4. python进行数据清理之pandas中的drop用法

    好久好久没有更新博客了,之前自学的估计也都忘记差不多了.由于毕业选择从事的行业与自己的兴趣爱好完全两条路,心情也难过了很久,既然入职了就要好好干,仍要保持自己的兴趣,利用业余时间重拾之前的乐趣. 从基 ...

  5. 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取

    from pandas import * import pandas as pd from sqlalchemy import create_engine engine = create_engine ...

  6. Pandas DataFrame操作

    DataFrame的创建 >>> import pandas as pd >>> from pandas import DataFrame #define a di ...

  7. Python:23种Pandas核心操作

    Pandas 是一个 Python 软件库,它提供了大量能使我们快速便捷地处理数据的函数和方法.一般而言,Pandas 是使 Python 成为强大而高效的数据分析环境的重要因素之一.在本文中,作者从 ...

  8. pandas神器操作excel表格大全(数据分析数据预处理)

    使用pandas库操作excel,csv表格操作大全 关注公众号"轻松学编程"了解更多,文末有公众号二维码,可以扫码关注哦. 前言 准备三份csv表格做演示: 成绩表.csv su ...

  9. 用Python的pandas框架操作Excel文件中的数据教程

    用Python的pandas框架操作Excel文件中的数据教程 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其 ...

随机推荐

  1. [转]数据库查询 sysobjects

    sysobjects sysobjects是系统自建的表,里面存储了在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等),各在表中占一行.只有在 tempdb 内,每个临时对象才在该表中占 ...

  2. java获取类名不包括路径

    class.getSimpleName(),就能获得仅仅的类名 class.getName()获得的是全路径的类名

  3. [Jest] Write data driven tests in Jest with test.each

    Often, we end up creating multiple unit tests for the same unit of code to make sure it behaves as e ...

  4. 基数排序之多keyword排序运用队列

    源码例如以下: #include <stdlib.h> #include <stdio.h> typedef struct QUEUEnode* link; struct QU ...

  5. java电影站点开发经验3

    上次讲到了.站点有资源了.可是必需要点缀下站点,要不光有资源比較空的.最開始就是想到了给资源加入评论功能的.然后自己就向开发个评论功能. 可是由于时间问题,并且本人也比較懒,就想在网上找找解决方式.嘻 ...

  6. git出错调试

    https://stackoverflow.com/questions/6178401/how-can-i-debug-git-git-shell-related-problems git_trace ...

  7. c# winform 多条件查找 外加网络人才回答

    浮生 Э 2012-11-22  c# winform 多条件查找  20 我现在有2个textbox  一个是用户名,另一个是电话   现在想对这两个进行条件查找datagridview里的数据 s ...

  8. servlet中的中文乱码问题

    老师总会说道:学完这个知识点,我们来谈谈中文乱码问题. 乱码的问题总是无处不在,处理不好会给用户带极差的用户体验. 那么我们来记录一下servlet中的乱码问题吧! 1.服务器向客户端响应时出现的乱码 ...

  9. Wireshark抓取RTP包,还原语音

    最近在做基于SIP的VoIP通信研究,使用Wireshark软件可以对网络流量进行抓包. VoIP使用RTP协议对语音数据进行传输,语音载荷都封装在RTP包里面.要对传输中的语音进行截获和还原,需要通 ...

  10. 79.员工薪水报表 Extjs 页面

    1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...