栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【无标题】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【无标题】

pandas Series

Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)以及一组与之对应的索引(数据标签)组成。

使用list创建Series
import numpy as np
import pandas as pd
arr1=pd.Series([1,2,3,4,5])
使用dict创建series
arr3=pd.Serise({"name":["lisa","nana","lili"],"age":[18,19,20]})
使用ndarray创建series
arr2=pd.Series(np.arange(10))
获取series的values与index
arr3.index
arr3.values
通过索引获取values
  • 注意,使用不连续索引的时候,需要使用两个[]
arr1[1:4]
布尔索引
arr1[[True,True,False,False,True,]]
DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同类型的值。DataFrame既有行索引也有列索引,数据是以二维结构存放的。

  • 类似二维数组/表格数据 (如excel)
  • 每列数据可以是不同的类型
  • 索引包括列索引和行索引
使用ndarray创建DataFrame
df1=pd.DataFrame(np.arange(20).reshape(4,5))
读取本地文件创建DataFrame的语法与参数解释
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,usecols=None, squeeze=False,dtype=None, engine=None,converters=None, true_values=None, false_values=None,skiprows=None, nrows=None, na_values=None, parse_dates=False,date_parser=None, thousands=None, comment=None, skipfooter=0,convert_float=True, **kwds)
  • io,Excel的存储路径
  • sheet_name,要读取的工作表名称
  • header, 用哪一行作列名
  • names, 自定义最终的列名
  • index_col, 用作索引的列
  • usecols,需要读取哪些列
  • squeeze,当数据仅包含一列
  • converters ,强制规定列数据类型
  • skiprows,跳过特定行
  • nrows ,需要读取的行数
  • skipfooter , 跳过末尾n行
df2 = pd.read_excel("年度数据.xls",skiprows=2,skipfooter=2)
读取数据库数据创建DataFrame
import pymysql
conn = pymysql.connect(
    user="root",
    password='123456',
    host="localhost",
    database="zhilai0509",
    port=3306)
df4 = pd.read_sql("select * from sale",conn)
获取DataFrame的index values columns
df4.index
df4.values
df4.columns
指定行列索引名称 创建指定index的series
arr1=pd.Series([1,2,3,4],index=["one","two","three","four"])
创建指定index和columns的DataFrame
pd.DataFrame([[1,2],[3,4],[5,6],[7,8]],index=["one","two","three","four"],columns=["a","b"])
pandas的索引操作 指定行索引名称
df4["salesman"]
df4[0:4]
DataFrame的索引 列索引
  • 在DataFrame中进行数据索引的时候,需要同时指定行索引与列索引,如果只传入了一个索引的话,默认是列索引
  • 只索引一列,只有一对[]的话,返回值是一个series类型的对象
  • 只索引一列,索引的时候,加两个[],返回值是一个DataFrame对象
df4["order_id"]
df4[0:5]
df4[df4["salesman"]==4]
df4[df4["number"]>100]
不连续索引
df4.loc[:,["order_id","brand","product"]]
loc索引
  • 通过标签选取数据,即通过index和columns的值进行选取。loc方法有两个参数,按顺序控制行列选取,范围包括start和end。
df4.loc[4:6,"order_id":"brand"]
df4[df4.loc[:,"brand"]==39]
df4.loc[::2,::2]
iloc索引
  • 通过行号选取数据,即通过数据所在的自然行列数为选取数据。iloc方法也有两个参数,按顺序控制行列选取。
df4.iloc[4:6,[0,1,4,6]]
多条件布尔索引
  • 多个条件之间使用&连接
  • 每一个条件需要使用()包裹起来
df4[(df4["salesman"] >=6) & (df4["salesman"]<=12)]
df4.loc[len(df4)-10:,["order_id","product","number"]]
DataFrame的常用属性与方法 常用属性 df.shape 行数与列数

df4.shape

df.dtype 列的数据类型

df4["order_id"].dtype

df.index 行索引

df4.index

df.columns 列索引

df4.columns

df.values 所有的值

df4.values

df.ndim 数据的维度

df4.ndim

df.size 查看元素个数

df4.size

常用方法 series.unique()
  • 查看该series数据去重后的所有值
df4["salesman"].unique()
df.head(n) 打印前几行

df4.head(10)

df.tail(n) 打印后几行

df4.tail(10)

df.info() DataFrame信息概览

df4.info()

字符串函数
  • pandas中所有的字符串函数,都str类下的方法
    df[0].str.lower() # 所有字符小写
    df[0].str.upper() # 所有字符大写
    df[0].str.strip() # 去除前后两端的空白
    df[0].str.lstrip() #去除字符串前端的空白
    df[0].str.rstrip() #去除字符串后端的空白
    df[0].str.split(‘’, n = 1, expand=False) # 按照指定字符进行拆分,n代表拆分多少次,expend代表是否生成新的列
    df[0].str.replace(‘[d]+’, ‘’) # 第一个参数为需要替换的值,第二个参数为替换后的值,可以只用正则匹配
    df[0].str.contains(‘w+’) # 判断字符串中是否包含某个值,可以使用正则匹配
    df[0].str.match(‘w+’) # 从头开始匹配,类似re.match
    order_id列所有字符大写df4["order_id"].str.upper()
    将日期格式转为字符串格式df4["date"]=df4["date"].astype("str")
    将date列按照-分列df4["date"].str.split("-",expand=True)
    将date列2019替换成19df4["date"].str.replace("2019","19")
    筛选order_id列不包含zh的df4[~df4["order_id"].str.contains("zh")]
pandas的排序 series排序
  • 语法结构Series.sort_values(ascending=True, inplace=False)
  • 参数解释:
    • ascending:默认为True升序排序,为False降序排序
    • inplace:是否修改原始Series
      arr1.sort_values(ascending=False,inplace=True)
DataFrame排序
  • 语法结构:DataFrame.sort_values(by, ascending=True, inplace=False)
  • 参数说明:
    • by:字符串或者List<字符串>,单列排序或者多列排序
    • ascending:bool或者List,升序还是降序,如果是list对应by的多列
    • inplace:是否修改原始DataFrame
      df4.sort_values(by=["number","salesman"])
pandas去重
  • 语法:df.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
  • 参数含义:
    • 代码中subset对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。
      • 默认值为subset=None表示考虑所有列。
    • keep='first’表示保留第一次出现的重复行,是默认值。keep另外两个取值为"last"和False,
      • 分别表示保留最后一次出现的重复行和去除所有重复行。
    • inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。
      df1.drop_duplicates("salesman",keep="last")
常用描述性统计函数

df4.describe()
df4["salesman"].count()非 NA 值的数量
df4.min()
df4["number"].argmin()计算能够获取到最小值和最大值的索引位置(整数)

pandas计数函数
  • 计算每一个值出现的次数
  • value_counts()
    df4["salesman"].value_counts()
增加数据列 方法一:使用表中没有的列名

df4["year"]=2019
df4["col1"]=[i for i in range(88071)]

方法二:insert()函数
  • loc, # int型,表示第几列;若在第一列插入数据,则 loc=0
  • column, # 给插入的列取名,如 column='新的一列’
  • value, # 数字,array,series等
  • allow_duplicates=False # 是否允许列名重复,选择Ture表示允许新的列名与已存在的列名重复。
    df4.insert(loc=0,colume="行号",value=(df4["col1"]))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/994594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号