【python】Pandas(series、dataframe)

目录

Pandas

(一)定义

(二)使用场景

(三)安装

(四)导入

Series—pandas

(一)定义

(二)可存储数据类型

(三)函数

1、创建series

DataFrame—pandas

(一)定义

(二)可存储数据类型

(三)函数

1、创建DataFrame

2、加载数据 read_csv

3、查看哪里有空值 isnull().sum()

4、空值填充 fillna

5、行列选择 loc

6、获取数据具体某一个值 at 、iloc

7、分组 Grouping

Pandas

(一)定义

pandas是python的核心数据分析支持库(numpy是计算)

(二)使用场景

1、与 SQL 或 Excel 表类似的,含异构列的表格数据

2、 有序和无序(非固定频率)的时间序列数据

3、带行列标签的矩阵数据,包括同构或异构型数据

4、任意其它形式的观测、统计数据集, 数据转入 Pandas 数据结构时不必事先标记

(三)安装

pip install pandas

【python】Pandas(series、dataframe)

(四)导入

导入pandas(通常与numpy一起使用)

import pandas as pd

Series—pandas

(一)定义

带标签的一维同构数组

(二)可存储数据类型

可存储整数、浮点数、字符串、Python 对象等类型的数据

(三)函数

1、创建series

s = pd.Series(data, index=index)

(1)参数

  • data:

data 支持以下数据类型:
Python 字典
多维数组
标量值(如,5)

  • index:行索引

(2)例子

① data为 多维数组

s = pd.Series(np.random.randn(5),index=['a', 'b', 'c', 'd', 'e'])
print(s, type(s))

【python】Pandas(series、dataframe)

② data为 Python 字典

d = {'a': 1, 'b': 2, 'c': 3}
e = pd.Series(d)
print(e)

注意:

提取data里任意index对应的值,没有该索引的值为NaN

print(pd.Series(d, index=['a', 'q']))

【python】Pandas(series、dataframe)

与dict相同,如果key不存在,则用get NaN,不会报错

print(s.get('f',np.nan))

③标量值

标量值生成series,Series 按索引长度重复该标量值

3、标量值生成series,Series 按索引长度重复该标量值
q = pd.Series(416, index=['a', '1', 'c'])
print(q)

【python】Pandas(series、dataframe)

2、提取为 series数组(有逗号)

print(q.array)

【python】Pandas(series、dataframe)

3、转换为 npdrray数组 (无逗号)

print(q.to_numpy())

【python】Pandas(series、dataframe)

DataFrame—pandas

(一)定义

带标签的、大小可变的二维异构表格
由多种类型的列构成的二维标签数据结构,类似于 Excel 、SQL 表,或 Series 对象构成的字典

(二)可存储数据类型

(三)函数

1、创建DataFrame

pd.DataFrame(d)

例1:

import pandas as pd
import numpy as np

d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
     'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df=pd.DataFrame(d)
print(df)

one two:列索引
a、b、c、d:行索引

【python】Pandas(series、dataframe)

例2:

df2 = pd.DataFrame({'A': 1.,
                    'B': pd.Timestamp('20220705'),
                    'C': pd.Series(1, index=list(range(4)), dtype='float32'),
                    'D': np.array([3] * 4, dtype='int32'),
                    'E': pd.Categorical(["test", "train", "test", "train"]),
                    'F': 'foo'})
print(df2)

【python】Pandas(series、dataframe)

2、 加载数据 read_csv

(读取的文件,分隔符,重新定义列名)

df = pd.read_csv("movieClassifyData.csv", sep=',', names=columns, header=0)

3、 查看哪里有空值 isnull().sum()

:统计每一列中为空的个数

print(df.isnull().sum())

4、 空值填充 fillna

:用c这一列的 均值(mean)填充该空值,inplace=true 操作保存

填充:用c这一列的均值填充该空值,inplace=true 操作保存
df['c'].fillna(df.c.mean(),inplace=True)

5、行列选择 loc

参数(行,列): 所有行 [‘a’,’b’]前两列(a.b两列)

print(df.loc[:,['a','b']])

【python】Pandas(series、dataframe)

6、获取数据具体某一个值 at 、iloc

at(第几行,第几列)

print(df.at[1,'a'])

【python】Pandas(series、dataframe)

iloc(第几行到第几行,第几列到第几列) 整数区间

前四行(0-3)、前两列(0-1)

print(df.iloc[0:4, 0:2])

【python】Pandas(series、dataframe)

例3:数据的输入输出

(1) 加载数据 (读取的文件,分隔符,重新定义列名,)

import pandas as pd
import numpy as np
columns = ['a', 'b', 'c', 'label']
1.加载数据  (读取的文件,分隔符,重新定义列名,)
df = pd.read_csv("movieClassifyData.csv", sep=',', names=columns, header=0)
print(df)

【python】Pandas(series、dataframe)

(2) 缺失值处理处理空列-填充(均值、众数)/剔除

查看哪里有空值:统计每一列中为空的个数

print(df.isnull().sum())

【python】Pandas(series、dataframe)

发现c这一列有一个空值,单独获取到这一列

print(df['c'])

【python】Pandas(series、dataframe)

空值填充:用c这一列的 均值(mean)填充该空值,inplace=true 操作保存

填充:用c这一列的均值填充该空值,inplace=true 操作保存
df['c'].fillna(df.c.mean(),inplace=True)
print(df['c'])

【python】Pandas(series、dataframe)

原本为空值的索引为3的这一行现在被c列 均值填充为25.2

再检查一下是否还有空值

print(df.isnull().sum())

【python】Pandas(series、dataframe)

7、分组 Grouping

(1)读取数据 (待读取文件,分隔符,表头,是否有行号)

读取数据 (待读取文件,分隔符,表头,是否有行号)
df=pd.read_csv("student.txt",sep=',',names=columns,index_col=0)

如果没有index_col=0:

【python】Pandas(series、dataframe)

(2)分组 groupby

分组:每个科目平均成绩
df_subj=df.groupby('学科')['成绩'].mean()
print(df_subj)

【python】Pandas(series、dataframe)

例4:

先创建表头

columns=['学号','学科','单元','成绩']

(1) 读取数据

读取数据 (待读取文件,分隔符,表头,是否有行号)
df=pd.read_csv("student.txt",sep=',',names=columns,index_col=0)
print(df)

【python】Pandas(series、dataframe)

一般不要把文件内容全部打印,使用head和shape可以大概查看文件内容

查看结构,先打印前几行查看
print(df.head(),df.shape)

可以看到将学号作为了行索引

【python】Pandas(series、dataframe)

(2)统计每个科目平均成绩 (分组依据:科目)

分组:每个科目平均成绩
df_subj=df.groupby('学科')['成绩'].mean()
print(df_subj)

【python】Pandas(series、dataframe)

拆分来看,先对学科进行分组

分组:每个科目平均成绩
df_subj=df.groupby('学科')
print(df_subj)
for i in df_subj:
    print(i)

可以看到根据学科分成了语文、数学、英语三组

【python】Pandas(series、dataframe)

再接着根据学科分组只显示成绩

df_subj=df.groupby('学科')['成绩']
print(df_subj)
for i in df_subj:
    print(i)

只显示成绩一列

【python】Pandas(series、dataframe)

再求学科成绩平均数

分组:每个科目平均成绩
df_subj=df.groupby('学科')['成绩'].mean()
print(df_subj)

【python】Pandas(series、dataframe)

(3)统计每个同学每个科目平均成绩

根据两个点分组:学生和科目

分组:每个学生每门科目平均成绩
df_stubmn = df.groupby(['学号','学科'])['成绩']
print(df_stubmn)
for j in df_stubmn:
    print(j)

会显示每个同学每门科目的四个单元一组的成绩

【python】Pandas(series、dataframe)

加上 平均数,可得到每个同学每门成绩的平均数

分组:每个学生每门科目平均成绩
df_stubmn = df.groupby(['学号','学科'])['成绩'].mean()
print(df_stubmn)
for j in df_stubmn:
    print(j)

【python】Pandas(series、dataframe)

Original: https://blog.csdn.net/kin_16/article/details/125632805
Author: Htht111
Title: 【python】Pandas(series、dataframe)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/755493/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 手把手教你:轻松打造沉浸感十足的动态漫反射全局光照

    一个沉浸感十足的游戏,其场景中的全局光照效果一定功不可没。 动态漫反射全局光照(DDGI)带来的光影变化,是细腻延展的视觉语言,让场景中每种颜色都有了”五彩斑斓&#82…

    Python 2023年10月21日
    027
  • python小游戏之《小猫抓鱼》

    欢迎加入我们卧虎藏龙的python讨论qq群:729683466 ● 导 语 ● 这次带大家做一个新的游戏 小猫抓鱼 其实,很久之前公众号发过一个游戏 接水果 当然,这个游戏颜值更…

    Python 2023年9月24日
    046
  • matplotlib之pyplot模块之直方图(hist():基础参数,返回值)

    文章目录 直方图 * 参数详解 参数实例及讲解 – bins通过列表设为区间及返回值分析 density 参考文章 直方图 概念: 直方图是用来衡量连续变量的概率分布的…

    Python 2023年8月30日
    043
  • java 贪吃蛇ai_让AI学会玩贪吃蛇

    2019/02/07 前言 我记得我年前的时候,我看过很多文章,包括一些论文,主题都是利用AI来玩贪吃蛇这种。他们利用的方法很多,例如利用搜索算法[1],还有利用监督学习来进行训练…

    Python 2023年9月24日
    055
  • python-lambda函数

    lambda函数 lambda函数是一种匿名函数,即没有名字的函数,使用lambda保留字定义,函数名是返回结果 lambda 多用于定义简单的、能在一行内表示的函数 主要用作一些…

    Python 2023年6月3日
    073
  • python 字段错位的处理

    需要解决的问题: import pandas as pd import numpy as np df = pd.DataFrame([[1,np.nan,3],[4,5,6],[7…

    Python 2023年8月16日
    076
  • pytest测试框架结合allure生成精美测试报告

    1、allure的简介 allure是轻量级、灵活的,支持多语言的测试报告工具。它不仅以简洁的 Web 报告形式非常简洁地展示了已测试的内容,而且允许参与开发过程的每个人从日常执行…

    Python 2023年9月12日
    050
  • pytest系列教程——10、配置文件pytest.ini

    在第一节的时候,讲过,关于pytest执行的参数命令,比如执行用例的时候加上 -s参数,就能显示打印内容。 -x 遇到错误时停止测试 , –maxfail=1…

    Python 2023年9月9日
    036
  • Empty suite

    你可以偷偷看一下你是不是在新建python文件时文件命名是这样的情况: ‘test_’开头或者’_test’结尾 因为这个,所以在运…

    Python 2023年5月24日
    073
  • 一文理解Linux的基本指令(三分钟学会Linux基本指令)

    前沿: 本文小马将把Linux一般比较常见的指令给大家一一列举出来,为了大家忘记某些指令后,可以方便查询记忆,再次小马建议,Linux指令并不需要去特别花时间专门记忆,只需要多进行…

    Python 2023年9月30日
    044
  • SQLAchemy处理一张表里两个外键指向同一个表的主键

    前言:许多时候实现目标功能都会遇到一张表里两个外键指向同一个表的主键,即为用一个表1关联另一个表2,表1里却使用了两个相同的外键去关联表2的主键,但是指向表2的事物是不同的,若不懂…

    Python 2023年8月15日
    040
  • 数据分析day7

    1、pandas中对齐运算 import numpy as np import pandas as pd ser_obj1 = pd.Series(range(10,20),ind…

    Python 2023年8月17日
    032
  • O2O优惠券数据分析(二)

    写在前面的话 本文中部分数据分析逻辑继承于O2O优惠券数据分析(一),如对文中部分数据处理和分析逻辑有问题,可先阅读前文。本文将主要负责分析线上用户行为及线上和线下共同用户的行为。…

    Python 2023年8月18日
    037
  • 谷歌地球专业版Google Earth Pro Mac/win中文

    Original: https://www.cnblogs.com/aurora-123/p/16854017.htmlAuthor: 佛系女孩Title: 谷歌地球专业版Goog…

    Python 2023年10月28日
    029
  • 《HelloGitHub》第 78 期

    兴趣是最好的老师, HelloGitHub 让你对编程感兴趣! HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521…

    Python 2023年9月21日
    040
  • pandas 两列相乘 dataframe

    import numpy as np import pandas as pd from IPython.core.interactiveshell import Interacti…

    Python 2023年8月6日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球