python-pandas

# pandas 数据预处理 基于numpy
# 读取csv文件(逗号隔开的文件)
import pandas,os,numpy as np
path = r"D:\desktop\Workspace\PythonWorkSpace\Machine-Learning\asstes\csv\2019_student_teacher.csv"
student_teacher = pandas.read_csv(path,encoding="gbk")
# print(type(student_teacher))  # panda.core.frame.DataFrame   就像numpy中的numpy.array
"""
序号         int64
准考证号       int64
姓名        object
报考专业代码     int64
报考专业      object
研究方向      object
培养模式      object
录取导师      object
"""
# print(student_teacher.dtypes) # dtype: object
# print(student_teacher) # 打印全部信息
# print(student_teacher.head()) # 打印前5条信息
# print(student_teacher.head(3)) # 打印前3条信息
# print(student_teacher.tail(5)) # 打印后边5条的信息
# print(student_teacher.columns) #Index(['序号', '准考证号', '姓名', '报考专业代码', '报考专业', '研究方向', '培养模式', '录取导师'], dtype='object')
# print(student_teacher.shape) # (398, 8)

# pandas中索引与计算,数据定位   行取数据
# print(student_teacher.loc[0])
"""
序号                           1
准考证号           zzzzz
姓名                         yyy
报考专业代码                   85207
报考专业                电气工程(专业硕士)
研究方向      (全日制)电能质量检测与评估(研究所9)
培养模式                      专业学位
录取导师                xxxx
Name: 0, dtype: object
"""
# print(student_teacher.loc[1:3])
# print(student_teacher.loc[[1,2,3]])
"""
   序号             准考证号   姓名  报考专业代码        报考专业                       研究方向  培养模式            录取导师
1   2  kk  xxx   80800        电气工程    (全日制)电力系统规划与运行分析(研究所10)  学术学位  teacher
2   3  kk  yyy   85207  电气工程(专业硕士)  (全日制)电力系统监测控制与运行分析(研究所10)  专业学位   teacher
3   4  kk   zzz   85210        控制工程      (全日制)智能控制理论及应用(研究所13)  专业学位  teacher
"""
# 列取数据
# print(student_teacher["报考专业"])
"""
0      电气工程(专业硕士)
1            电气工程
2      电气工程(专业硕士)
3            控制工程
4         电子与通信工程
"""
# 获取多个列,注意里边是list
# print(student_teacher[["报考专业","导师"]])
# print(student_teacher.columns.tolist())  # ['序号', '准考证号', '姓名', '报考专业代码', '报考专业', '研究方向', '培养模式', '录取导师']
# print(student_teacher.loc[0]["姓名"])
# 列之间计算
#   *   new = student_teacher[x]*student_teacher[y]   对应位置相乘,注意行数相同
#   +-   维度相同 对应相加减
#   加减的若为常数 每个数值与常数+-
# 添加新列 student_teacher['new']=new
# print(student_teacher["序号"].max())  # 获取该列最大值
#   按照序号列排序, inplace =True表示在源DataFrame上修改,否则生成新的Frame,
#   默认排序从小到大ascending=True,Flase 为从大到小
#   对于列中某些为空的 显示时为NaN, 排序是不管哪种都默认放最后
# print(student_teacher.sort_values("序号",inplace=True,ascending=True))
# xxx = student_teacher["xxx"]
# isNullOrNot = pandas.isnull(xxx)
# print(isNullOrNot)
"""
为空的是True
0 False
1 True
...
"""
# xxx[isNullOrNot] # len(....) 即可获取缺失值的个数
"""
对于一些加减乘除的操作 ,注意过滤NaN 否则计算机结果为NaN
student_teacher["xxx"][isNullOrNot==False] 过滤缺失值
student_teacher["xxx"].mean() 自带的直接过滤
为空的是True
0 NaN
...
"""
# 聚合函数,分组后求平均:基本思路是循环
#  按照index分组,求values的平均值
#   values= 还可以为list aggfunc 默认为mean
# student_teacher.pivot_table(index="",values="",aggfunc=np.mean)
# student_teacher.dropna(axis=1,subset=["xx","yy"]) # 删除 列中为空的   0删除行中为空的 若为行 使用subnet = [1,2,3]
# student_teacher.loc[83,"序号"] # 直接定位到值
# student_teacher.sort_index("Age") # 按照Age排序, 结果中多添加的index列与会按照age排序
# student_teacher.sort_index("Age").reset_index(drop=True) # 表示原来的index不用了,形成新的
# def func(data):
#     return data
# student_teacher.apply(func) # 自定义函数

# DataFrame 内部子结构Series
#  例如 某一列的type 就是pandas.core.series.Series
#   student_teacher["xx"]  可再次对它进行切片
# =============================================
# 自定义Series
from pandas import Series
id= student_teacher["报考专业代码"].values  # type 为 np.array  即把 xx 列所有内容 放入 array
name= student_teacher["姓名"].values  # type 为 np.array  即把 xx 列所有内容 放入 array
series =Series(name,index=id)
# series =Series(id,index=name)
series[[85207,85210]] # 对series进行查找, index 为list中值的行,index可为str类型
"""
id1 name
id2 name2
...
"""
# print(series.index.tolist())
# series.sort_index() # 按照index排序
# series.sort_values() # 按照values排序
# np.add(series,series) series相加 (维度相同)
# series[series>50] 选取符合条件的值
# print(series[series>'85200'])

new= student_teacher.set_index("姓名",drop=True) # 修改索引,并返回 新的Frame
print(new.loc['name']) # 此时查找行可通过姓名属性
# data.drop(["xxx"],axis=1) 删除列
# data.query("x>1 & y<2") 条件查询

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 高分辨率图像建筑物提取数据集制作

    # data:2020-01-04 # user:dean # desc:批量将json文件转为 label import os dir = r"I:\人工智能...

    Dean0731
  • 在linux运行Tensorflow代码所遇到的问题

    1,OSError: Unable to open file (file locking disabled on this file system (use H...

    Dean0731
  • Tensorflow

    ##################################################################

    Dean0731
  • 【推荐】新冠肺炎的最新数据集和简单的可视化和预测分析(附代码)

    https://github.com/CSSEGISandData/COVID-19

    黄博的机器学习圈子
  • 51Nod 1016 水仙花数 V2(组合数学,枚举打表法)

    1016 水仙花数 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 160         难度:6级算法题 水仙花数是指一个 n 位数 ...

    Angel_Kitty
  • wordpress博客搭建

    PS:如果只是用来写写东西,做个小网站宣传自己什么的,用便宜的主机就可以了,建议在硅云和亿速互联买中国香港虚拟主机

    huanhao
  • MySQL 中 You can't specify target table '表名' for update in FROM clause错误解决办法

    在MySQL中,写SQL语句的时候 ,可能会遇到 You can't specify target table '表名' for update in FROM ...

    小菠萝测试笔记
  • Android EasyPermission优雅地实现动态权限申请

    Google开源的动态权限适配库,用起来比较简洁和清晰,总体还不错,如果喜欢链式调用的就用 RxPermission 或者 AndPermission 都是不错...

    Vance大飞
  • 自然语言处理数据集免费资源开放(附学习资料)

    作者:Jason Brownlee 翻译:梁傅淇 本文长度为1500字,建议阅读3分钟 本文提供了七个不同分类的自然语言处理小型标准数据集的下载链接,对于有志于...

    数据派THU
  • 收集数据太困难?这里为你准备了 71 个免费数据集

    日前,KDnuggets 上的一篇文章总结了七十多个免费的数据集,内容涉及到政府、金融、卫生、新闻传媒等各个方面,除了这些数据,文中还提供数据提取地址。 AI ...

    AI研习社

扫码关注云+社区

领取腾讯云代金券