首页 > 其他分享 >Pandas 学习笔记

Pandas 学习笔记

时间:2022-10-04 22:01:45浏览次数:58  
标签:index 笔记 ID 学习 books pd print import Pandas

一、用Pandas创建Excel文件

import pandas as pd
df = pd.DataFrame({'ID':[1,2,3],'Name':['liujun','daifen','duanziqian']}) # 创建一个数据集
df = df.set_index('ID') # 将ID设为索引
df.set_index('ID',inplace = True) # 将ID设为索引的第二种方法
df.to_excel('E:/img/test.xlsx') # 保存为本地Excel
print(df)
print("Done!")

二、数据读取

import pandas as pd

# header 用来设置把那一行当做列属性行 ,但是如果前面行为空,读取时能够跳过空行,如果文件本身没有列索引,可以将Header = None
# Header = None 后可以人为设定 列属性
# test.columns = ['姓名','年级','',]
test = pd.read_excel('E:/img/test.xlsx',header=0,index_col='姓名')# index_col='姓名' 用来指明索引列
print(test.shape) # 输出表格大小
print(test.columns) # 输出列属性
print(test.head(3)) # 默认输出前 5 行
print("================================")
print(test.tail(3)) # 默认输出后 3 行

三、操纵行列,单元格

生成序列

import pandas as pd
L1 = [100,200,300]
L2 = ['x','y','z']
s1 = pd.Series(L1,index=L2)
# 或者直接 s1 = pd.Series([100,200,300],index=['x','y','z'])
print(s1)
"""
d = {'x':100,'y':200,'z':300} # 键值对,字典
s1 = pd.Series(d) # 生成一个序列对象
print(s1)
"""

把序列加入表格,以列的形式

import pandas as pd
s1 = pd.Series([1,2,3],index=[1,2,3],name='A')
s2 = pd.Series([10,20,30],index=[1,2,3],name='B')
s3 = pd.Series([100,200,300],index=[1,2,3],name='C')
df = pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3}) # 把s1,s2,s3当做列加入表格
print(df)

image-20221004151154403

四、自动填充,读取跳过空行空列

拿到 Series 然后改单元格

import pandas as pd
from datetime import date,timedelta

def add_month(d,md):
    yd = md // 12
    m = d.month + md % 12
    if m != 12:
        yd += m//12
        m=m%12
    return date(d.year+yd,m,d.day)

# skiprows 跳过指定多少行,usecols:只读取指定列
books = pd.read_excel('E:/img/book.xlsx',skiprows=3,usecols="C:F",index_col=None,dtype={'ID':str,'Instore':str,'Date':str})
start = date(2018,1,1) # 注意是小括号
for i in books.index:
    books['ID'].at[i] = i+1
    if i%2 == 0:
        books['Instore'].at[i] = 'Yes'
    else:
        books['Instore'].at[i] = 'No'
    # books['Date'].at[i] = start + timedelta(days=i) # 加日期
    # books['Date'].at[i] = date(start.year+i,start.month,start.day) # 加年份
    books['Date'].at[i] = add_month(start,i) # 加月份
print(books)

直接在 DateFrame 中改

books[i,'ID'] = i+1
books[i,'Instore'] = 'No' 
books[i,'Date'] = add_month(start,i)

五、列乘法

直接 一列 乘 一列,它自动会逐项把第一列的元素乘以第二列的元素

import pandas as pd

books = pd.read_excel('E:/img/books.xlsx',index_col='ID')
books['Price'] = books['ListPrice'] * books['Discount']
print(books)

加减乘除同样的处理思维

只算某几行,可以用循环

import pandas as pd
books = pd.read_excel('E:/img/books.xlsx',index_col='ID')
for i in range(5,16):
    books['Price'].at[i] = books['ListPrice'].at[i]*books['Discount'].at[i]
print(books)

调用 apply() 函数操作

import pandas as pd
def add_2(x):
    return x+2

books = pd.read_excel('E:/img/books.xlsx',index_col='ID')
books['ListPrice'] = books['ListPrice'].apply(add_2) #只需要传函数名字
print(books)

P6

标签:index,笔记,ID,学习,books,pd,print,import,Pandas
From: https://www.cnblogs.com/femme/p/16754578.html

相关文章

  • java学习前
    java后台运行机制编译指令:javaca.java-dx.classa.java--->x.class运行指令:javax.classx.class是都可以直接运行的机器指令,一份java代码可以再多平台使用,原......
  • 学习记录-Python的局部变量和全局变量
    目录1定义2作用域的重要性2.1全局作用域中的代码不能使用任何局部变量2.2局部作用域中的代码可以访问全局变量2.3不同局部作用域中的变量不能相互调用2.4在不同的作......
  • 机器学习概念漂移检测方法(Aporia)
    目前,有多种技术可用于机器学习检测概念漂移的方法。熟悉这些检测方法是为每个漂移和模型使用正确度量的关键。在本文章中,回顾了四种类型的检测方法:统计、统计过程控制、基于......
  • 栈&单调栈笔记
    栈先进后出,由于STL中的stack内存分配逻辑是deque,常数极大,所以通常用数组或vector模拟。对于数组模拟栈,数组的第一个位置通常被设为栈顶,下面是已被封装成类的代码......
  • C++自学笔记 多态性的实现 How virtual work in C++
     静态联编所支持的多态性称为编译时的多态性。当调用重载函数时,编译器可以根据调用时所使用的实参在编译时就确定下应调用哪个函数。动态联编所支持的多态性称为运行时......
  • pydantic学习与使用-14.exclude_unset去掉未传值的字段
    前言使用pydantic定义数据模型,有些非必填的字段,我们希望在实例化时未传值的字段去掉,这样可以取值一些为None的字段。遇到问题age和address是非必填字段classUser......
  • 关于MarkDown语法的学习
    关于MarkDown语法的学习一、下载安装TyporaB站教程:typora下载安装教程_哔哩哔哩_bilibili对应的破解文档:Typora(morkdown编辑器)的下载和破解-article-博客园(c......
  • C++自学笔记 多态性 Polymorphism
      virtual关键字虚函数/虚方法  前缀virtual关键字表示子类父类有联系 virtual的作用是告诉编译器,对该函数的调用是通过指针或者引用的话,在运行时才可以确......
  • pydantic学习与使用-13.Field 定制字段使用别名alias
    前言pydantic里面json是一个内置属性,我想定义一个字段名称是json,这就会引起报错:Fieldname"json"shadowsaBaseModelattribute;useadifferentfieldnamewith"......
  • Occupancy Networks:基于学习函数空间的三维重建表示方法
    概述 随着深度神经网络的到来,基于学习的三维重建方法逐渐变得流行。但是和图像不同的是,在3D中没有规范的表示,既能高效地进行计算,又能有效地存储,同时还能表示任意拓扑的高分......