前言
jupyter notebook是python环境下一个比较方便的数据处理工具,可以实时显示结果,对数据预处理(增删减改合并填充)有很大帮助,最近打建模就稍学习了一番
配置
anaconda
配置教程
warning 不管也可以进入,这里我是不小心把核的位置改了
这个是容纳大部分环境的软件,可以直接下载jupyter notebook的环境,非常方便,然后打开终端anaconda prompt输入jupyter notebook
若出现几个链接Ctrl+左键即可出现如下界面
另提
之前没找到这个方法,最后一直在绕圈子,最后将VS Code也配置上了jupyter,各有千秋,个人更喜欢VS(因为懒)
No module named ‘pandas‘
报错 说明需要下载(pip install)各种库,刚开始特别痛苦,用anaconda就不需要担心,但是原生环境没有代码提示,纯纯一个一个敲,很痛苦,报错提示也很稀奇古怪。- VS Code的配置网上可以搜到,这里提一下我遇到一个很容易遇到的报错
Warnning:time out
,这是因为外网下载这些库网速太慢了,就超时了自动停止下载
解决办法:
pip
--default-timeout=100
install +要下载的名称
然后我为了下载原生环境(B站上up主基本用的都是原生的)不小心把VS中jupyter内核搞丢了,现在只能用原生了/哭死
导入数据
excel
# 导入excel 路径必须为/
df_excel=pd.read_excel('/Users/stq楚熠/jupyter/data/信科2301.xlsx')
df_excel
text
#text 要改成UTF-8的格式,否则会报错,另存即可
df_text=pd.read_table('/Users/stq楚熠/jupyter/data/信科2301(1).txt')
df_text
csv(常用)
# 加载csv 这个也要注意转格式
df_csv=pd.read_csv('/Users/stq楚熠/jupyter/data/信科2301(1).csv')
df_csv
合并文件
多个文件
# 读取多个文件并合并成应该新文件
import glob
# 设置文件的路径
path='/Users/stq楚熠/jupyter/data'
# 合并多个数据 必须三个以上,否则不出结果
all_files=glob.glob(path+'/*.csv')
all_data=[]
for filename in all_files:
df=pd.read_csv(filename,index_col=None,header=0)
all_data.append(df)
data=pd.concat(all_data,axis=0,ignore_index=True)
其他代码
#2.数据信息查看
#删除特定几行
data=data.drop(index=[38,39],axis=1)
data
data=df_csv
# 查看数据规模/维度
data.shape
#查看各变量的数据类型
data.dtypes
#查看数据整体信息
data.info()
#查看数据描述
data.describe()
#列名
data.columns
##查看名单唯一值
data['学院'].unique()
import random
#加增一列data['']=data['']//已有 这种也可以
#data.insert(loc=0,column='成绩',value=0)
#data.insert(loc=0,column='绩点',value=0)
data['成绩']=[random.randint(0,100) for _ in data['成绩']]
data['绩点']=[random.uniform(0,5) for _ in data['绩点']]
data
#删除特定列
#data.drop(columns='Origin')
#data.head()
#删除特定行厅#根据索引删除行
data.drop(index=38,axis=1)
#查看数据表值
data['学号'].values
#查看空值判断各变量中是否存在缺失值
data.isnull().any(axis=0)
#判断数据行中是否存在缺失值
data.isnull().any(axis=1)
#定位缺失值所在的行
data.loc[data.isnull().any(axis=1)]
#各变量中缺失值的数量
data.isnull().sum(axis=0)
#直接删除空值数据所在行
data3=data.dropna()
data3
#定义缺失值为0
data_null_0=data.fillna(0,inplace=False)
data_null_0
#对缺失值进行填充(用中位数或平均数..·)前者为众数,后者为平均数
data_null_value=data.fillna(value={'分流班级':data['分流班级'].mode()[0],
'学号':data['学号'].mean()},
inplace=False)
data_null_value
#检测空值
data_null_value.isnull().sum(axis=0)
# 各项指标
data_null_value.describe()
# 处理重复数据
data_du=pd.read_csv('/Users/stq楚熠/jupyter/data/信科2301(1).csv')
data_du
#判断数据中是否存在重复值
data_du.duplicated().any
#删除重复值,会删除除第一条后的,默认对所有变量判断
data_du.drop_duplicates()
#查看前5行
data.head()
#查看后5行
data.tail()
#指定变量判断
data_du.drop_duplicates(subset=['学号','姓名'],keep='first',inplace=False)
#first保留第一个,inplace=True对原数据修改
#增加索引
data['index']=data.index
data.head()
#删除特定行#根据数值删除行
data['成绩'].isin([0])
#删除特定列
data.drop(columns='index')
#查找特定数据,有就设置为data 没有就加一个~
data[data['index'].isin(['5'])]
data[~data['index'].isin(['usA'])]
data[~data['学院'].isin(list(range(0,200)))]
#值排序:从大到小
data.sort_values(by='成绩',ascending=False)
#值排序:从小到大,一列值
data.sort_values(by='绩点')
#值排序:两列值
data.sort_values(by=['成绩','绩点'])
#索引排序
data.sort_index('index',ascending=False)
#平均
country_df=data.groupby(['成绩'])['绩点'].mean()
country_df
#将上表生成为表格
data_country=country_df.reset_index()
data_country
#平均中的平均
data_country_annual=data.groupby(['成绩','绩点'])['序号'].mean().reset_index()
data_country_annual.head()
X=data['成绩']
import numpy as np
#数据标准化
#[0,1]标准化
def MaxMinNormalization(x):
x=(x-np.min(x))/(np.max(x)-np.min(x))
return x
MaxMinNormalization(X)
x=MaxMinNormalization(X).reset_index()
x
#z-score标准化
def ZescoreNormalization(x):
x=(x-np.mean(x))/np.std(x)
return x
y=ZescoreNormalization(X).reset_index()
y
#储存
y.to_excel('/.xlsx', sheet_name='y')
y.to_csv('/.csv')