jupyter notebook 数据处理入门

前言

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')
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值