pandas的基本使用

【Tablesaw】Java数据框架和可视化库,Java中的 “Pandas” Tablesaw是一款Java的数据可视化库,本文主要介绍了基于Tablesaw进行数据出力的基本操作,包括加载数据,对数据进行操作等,类比Python中的Pandas库。 阅读详情

pandas的基本使用

  • pandas三剑客
# 财务部门
import numpy as np
# 业务部门
import pandas as pd
# UI部门
import matplotlib.pyplot as plt
# 导入两种数据类型
from pandas import Series, DataFrame

Series数组

  • 一维数组:一组【有序的】,【数据类型相同】的集合
  • Series是一种【类似】于【一维数组】的对象,由下面两个部分组成:
    • values:一组数据(ndarray类型)
    • index:相关的数据索引标签

Series的创建

  • 格式
    Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
    两种创建方式:
  • 由列表或numpy数组创建
    默认索引为0到N-1的整数型索引
#列表创建
l1 = [1,2,3,4,5]
#如果没有设置索引,会自动以隐式索引替代
s1 = Series(l1)	==>
0    1
1    2
2    3
3    4
4    5
dtype: int64

#ndarray创建
arr2 = np.random.randint(0,10,size=4)
s3 = Series(arr2)	==>
0    0
1    3
2    1
3    3
dtype: int32


#列表作为索引(副本),array作为值创建(引用)
#由ndarray创建的是引用,而不是副本。对Series元素的改变也会改变原来的ndarray对象中的元素。(列表没有这种情况)
data = np.random.randint(0,100,size=3)
index = ["python","java","php"]
s = Series(data=data, index=index)
s	==>
python    18
java      94
php       39
dtype: int32
  • 由字典创建
name_dic = {
    "tom":19,
    "mery":20,
    "lucy":19,
    "jery":21
}
#默认使用字典的键
Series(data=name_dic) ==>
jery    21
lucy    19
mery    20
tom     19
dtype: int64

#使用定义的键
Series(data=name_dic,index=["tom","mery"])	==>
tom     19
mery    20
dtype: int64

Series的索引和切片

  • 索引
    可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的仍然是一个Series类型)。分为显示索引和隐式索引:

    (1) 显式索引:

    • 使用index中的元素作为索引值
    • 使用.loc[](推荐)
      注意,此时是闭区间

    (2) 隐式索引:

    • 使用整数作为索引值
    • 使用.iloc[](推荐)
      注意,此时是半开区间
dic = {
    "name":"tom",
    "address":"beijing",
    "score":100
}
# 【注意】sereis对象也会强制统一数据类型
s1 = Series(data=dic) ==>
address    beijing
name           tom
score          100
dtype: object

#显示访问
# 字典的方式访问
s1["name"]	==>'tom'
# Series特有的访问形式
# 为的是统一访问形式
s1.loc["name"]	==>'tom'

#隐式访问
s1[1] ==>'tom'
s1.iloc[1] ==>'tom'

# 【重点】
# loc[key]
# iloc[index]
  • 切片
    • 但凡是隐式索引访问的,都是左闭右开
    • 但凡是显示索引访问的,都是左闭右闭区间
#显示索引切片
s1.loc["address":"name"] ==>
address    beijing
name           tom
dtype: object

#隐式索引切片
# 使用隐式索引切片
s1.iloc[0:2]	==>
address    beijing
name           tom
dtype: object

Series的属性和方法

  • 属性
    可以把Series看成一个定长的有序字典,可以通过shape,size,index,values,name,dtype等得到series的属性
s ==>
语文    150
数学    130
英语    140
理综    300
dtype: int64
#shape属性
s.shape ==> (4,)
#size属性
s.size ==>4
#index属性
s.index ==>
Index(['语文', '数学', '英语', '理综'], dtype='object')
#values属性
s.values ==>
array([150, 130, 140, 300], dtype=int64)
#name属性(得到列索引值)
#dtype属性
s.dtype ==>dtype('int64')

## 拓展:如何研究一个陌生的类型??
type(s.index) ==>pandas.core.indexes.base.Index
from pandas.core.indexes.base import Index
使用help(Index)或者Index?? 来查帮助文档
pd.Index(["A","B","C"])	==>
Index(['A', 'B', 'C'], dtype='object')

  • 方法
    • 常用的:
      • value_counts
      • sort_values
      • sort_index
      • isnull().any()
      • s[s.isnull()]
      • s[s.notnull()]
      • s.head()
      • s.tail()
#value_counts 统计Series中,每一个值出现的次数,一般统计的是离散值
data = ["tom","jack","tom","tom","jack","lucy","tom","jack"]
s = Series(data)	==>
0     tom
1    jack
2     tom
3     tom
4    jack
5    lucy
6     tom
7    jack
dtype: object

#value_counts
s.value_counts() ==>
tom     4
jack    3
lucy    1
dtype: int64

#unique()去重函数,查看一个Series中存在哪些值
s.unique() ==>
array(['tom', 'jack', 'lucy'], dtype=object)

#可以使用head(),tail()分别查看前n个和后n个值
s.head(2)	==>
0     tom
1    jack
dtype: object
s.tail(2) ==>
6     tom
7    jack
dtype: object

#对值和索引排序
s  ==>
0    88
1    27
2    96
3    24
4    47
5     1
6    36
7    63
8     1
9    34
dtype: int32
#值排序
s1 = s.sort_values()	==>
5     1
8     1
3    24
1    27
9    34
6    36
4    47
7    63
0    88
2    96
dtype: int32
#索引排序(索引需要是数字类型)
s1.sort_index() ==>
0    88
1    27
2    96
3    24
4    47
5     1
6    36
7    63
8     1
9    34
dtype: int32

  • 使用Bool_list访问数组对象
    BOOL型的列表可以读取列表数据,True对应的值就会返回,False对应的值就放弃
s1 ==>
0    2.0
1    1.0
2    NaN
3    4.0
4    NaN
dtype: float64
#普通版
bool_list = [True, False,True, False, False]
s1[bool_list]	==>
0    2.0
2    NaN
dtype: float64


# 获取空值的数据
s1.loc[s1.isnull()]  ==>
2   NaN
4   NaN
dtype: float64

# 过滤掉空值
s1.loc[s1.notnull()]
0    2.0
1    1.0
3    4.0
dtype: float64

Series的运算

  • 适用于numpy的数组运算也适用于Series
# 和一个数运算
s = Series(data=np.array([1,2,3,4,5]))
s + 8		==>
0     9
1    10
2    11
3    12
4    13
dtype: int32
  • Series之间的运算
    • 在运算中自动对齐不同索引的数据

    • 如果索引不对应,则补NaN

    • pandas的空值和任何数运算,都得到np.nan

       np.nan + 10000 ==> nan
      
s1 = Series(data=np.array([1,2,3,4,5]), index=list("ABCDE"))
s2 = Series(data=np.array([10,20,30,40,50]), index=list("BCDEF"))
s1 + s2 	==>
A     NaN
B    12.0
C    23.0
D    34.0
E    45.0
F     NaN
dtype: float64

#注意:要想保留所有的index,则需要使用
add() 加
sub() 减
mul() 乘
div() 除
s1.add(s2, fill_value=0)	 ==>
A     1.0
B    12.0
C    23.0
D    34.0
E    45.0
F    50.0
dtype: float64

DataFrame

  • 概念
    DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。
    • 行索引:index
    • 列索引:columns
    • 值:values(numpy的二维数组)

DataFrame的创建

最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。
此外,DataFrame会自动加上每一行的索引(和Series一样)。
同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。

# 1、字典创建
dic1 = {
    "name":["jack","lucy","tom"],
    "python":[100,98,99],
    "java":[98,79,86],
    "C":[68,98,87]
}
df1 = DataFrame(data=dic1)	==>

	C  java name	python
0	68	98	jack	100
1	98	79	lucy	98
2	87	86	tom	    99


# 2、列表数组创建
data = np.random.randint(0,100,size=(3,4))
index = list("ABC")
columns = list("abcd")
df2 = DataFrame(data=data, index=index, columns=columns)	==>
	a	b	c	d
A	87	33	63	71
B	79	62	7	28
C	58	74	11	49

# 3、读取外部excel表格 
 pd.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None, parse_cols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None, convert_float=True, has_index_names=None, converters=None, dtype=None, true_values=None, false_values=None, engine=None, squeeze=False, **kwds)
df3 = pd.read_excel('data.xlsx', sheet_name=1)


#4、直接把一个Series转换成DataFrame
s = Series(data=np.random.randint(0,10,size=(5)), index=list("ABCDE"), name="python")
DataFrame(s)  ==>
	python
A	3
B	1
C	1
D	7
E	4

DataFrame的属性

DataFrame属性:values、columns、index、shape、dtypes

dic = {
    "zhangsan":[150,150,150,300],
    "lisi":[10,20,70,88]
}
df = DataFrame(data=dic, index=["chinese","math","english","lizong"])			==>
	lisi	zhangsan
chinese	10	150
math	20	150
english	70	150
lizong	88	300

#df.dtypes
df.dtypes  ==>
lisi        int64
zhangsan    int64
dtype: object

df.shape  ==>(4, 2)

df.index		==>Index(['chinese', 'math', 'english', 'lizong'], dtype='object')

df.columns  	==>Index(['lisi', 'zhangsan'], dtype='object')

df.size	==>	8


#拓展
分布直方图
df.plot(kind="bar")

在这里插入图片描述

DataFrame的索引

  • 对列进行索引
    • 通过类似字典的方式
    • 通过属性的方式
      可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。
#创建
columns = ["python","java","name","address"]
data = np.random.randint(0,100,size=(5,4))
df = DataFrame(data=data, columns=columns)	==>
	python	java	name	address
0	28	26	93	60
1	40	45	96	26
2	69	18	71	64
3	45	46	55	0
4	85	23	51	95

#字典式访问
# 把DataFrame看成一个字典,每一个列标签,就是字典的键,对应的值就是这一列数据
df["address"]

#赋值
df["address"] = ["北京","上海","广州","深圳","武汉"]
df   ==>
	python	java	name	address
0	22	70	36	北京
1	64	4	94	上海
2	89	36	46	广州
3	62	98	17	深圳
4	69	75	4	武汉

#使用属性访问
df.address

# 访问多列数据
df[["address","name"]]

  • 对行进行索引
    • 使用.ix[]来进行行索引
    • 使用.loc[]加index来进行行索引
    • 使用.iloc[]加整数来进行行索引
      同样返回一个Series,series的index为datafrom的columns。
df    ==>
python	java	name	address
0	28	26	93	北京
1	40	45	96	上海
2	69	18	71	广州
3	45	46	55	深圳
4	85	23	51	武汉
#访问
df.loc[0]		==>
python     28
java       26
name       93
address    北京
Name: 0, dtype: object

#改变行索引
df.index = list("abcde")	==>

python	java	name	address
a	28	26	93	北京
b	40	45	96	上海
c	69	18	71	广州
d	45	46	55	深圳
e	85	23	51	武汉

#多行访问
df.loc[["a","b"]]

#隐式访问
df.iloc[0]	==>
python     28
java       26
name       93
address    北京
Name: a, dtype: object
df.iloc[1]
  • 对元素索引的方法
    • 使用列索引 .loc[index,columns]
    • 使用行索引(iloc[3,1]相当于两个参数;iloc[[3,3]] 里面的[3,3]看做一个参数)
    • 使用values属性(二维numpy数组)
df		==>
	python	java	name	address
a	28	26	93	北京
b	40	45	96	上海
c	69	18	71	广州
d	45	46	55	深圳
e	85	23	51	武汉

#显式访问
df.loc["b","java"]	==>45
# 隐式访问
df.iloc[1,1]		==>45
# 使用DataFrame的values属性访问
df.values[1,1]		==>45

总结:

	 列访问  df[column]
	行访问  df.loc[index]
	元素访问  df.loc[index, column] 

切片

  • 【注意】 直接用中括号时:
    • 索引表示的是列索引
    • 切片表示的是行切片
  • 行切片 df[index1:index2]
  • 列切片 df.loc[:, column1:column2]
  • 块切片 df.loc[index1:index2, column1:column2]
  • 其他写法:间接获取,可能是个引用,也可能是一个副本
    • read是没有问题的, write有可能有问题,因为很可能你操作的是一个副本对象
df   ==>
	python	java	name	address
a	22	70	36	北京
b	64	4	94	上海
c	89	36	46	广州
d	62	98	17	深圳
e	69	75	4	武汉

#行切片
df["a":"b"]				==>
	python	java	name	address
a	28	26	93	北京
b	40	45	96	上海

#列切片
df.loc[:,"python":"java"]	==>
	python	java
a	28	26
b	40	45
c	69	18
d	45	46
e	85	23

#快切片
df.loc["c":"d","name":"address"]		==>
name	address
c	71	广州
d	55	深圳

#间接访问
df1 = df.loc[["b","c"]]
df1["address"]		==>
b    上海
c    广州
Name: address, dtype: object

DataFrame的运算

  • DataFrame之间的运算
    同Series一样:
    在运算中自动对齐相同索引的数据
    如果索引不对应,则补NaN
#正常情况下
df1 = DataFrame(data=np.random.randint(0,10,size=(3,3)))
df2 = DataFrame(data=np.ones(shape=(3,3)))
display(df1, df2)		==>
	0	1	2
0	7	5	2
1	9	7	4
2	8	4	4

	0	1	2
0	1.0	1.0	1.0
1	1.0	1.0	1.0
2	1.0	1.0	1.0

df1 + df2	==>

0	1	2
0	8.0	6.0	3.0
1	10.0	8.0	5.0
2	9.0	5.0	5.0

#不正常情况
df3 =  DataFrame(data=np.ones(shape=(3,4)))
 如果索引不对齐,会自动补充np.nan
df1 + df3
0	1	2	3
0	8.0	6.0	3.0	NaN
1	10.0	8.0	5.0	NaN
2	9.0	5.0	5.0	NaN

#使用add函数
df1.add(df3,fill_value=0)
	0	1	2	3
0	8.0	6.0	3.0	1.0
1	10.0	8.0	5.0	1.0
2	9.0	5.0	5.0	1.0

  • 其他操作函数

+			add()
-			sub(), subtract()
*		mul(), multiply()
/		truediv(), div(), divide()
//		floordiv()
%			mod()
**			pow()
  • Series与DataFrame之间的运算
    • 使用Python操作符:以行为单位操作(参数必须是行),对所有行都有效。(类似于numpy中二维数组与一维数组的运算,但可能出现NaN)
    • 使用pandas操作函数:
      axis=0:以列为单位操作(参数必须是列),对所有列都有效。
      axis=1:以行为单位操作(参数必须是行),对所有行都有效。
s = Series(data=np.ones(shape=4), index=list("ABCE"))
df = DataFrame(data=np.random.randint(0,10,size=(4,4)), index=list("ABCD"),columns=list("abcd"))
display(s, df)		==>
A    1.0
B    1.0
C    1.0
E    1.0
dtype: float64
a	b	c	d
A	2	0	8	0
B	5	0	9	0
C	6	9	4	5
D	1	2	9	3

# 默认DataFrame与Series运算,是以列标签对齐
df + s		==>
	A	B	C	E	a	b	c	d
A	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
B	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
C	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
D	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN

#axis="index" 设置以行索引对齐
df.add(s, axis="index")		==>
	a	b	c	d
A	3.0	1.0	9.0	1.0
B	6.0	1.0	10.0	1.0
C	7.0	10.0	5.0	6.0
D	NaN	NaN	NaN	NaN
E	NaN	NaN	NaN	NaN
#过滤空值
df1[df1.notnull().any(axis=1)]
	a	b	c	d
A	3.0	1.0	9.0	1.0
B	6.0	1.0	10.0	1.0
C	7.0	10.0	5.0	6.0
axis=0(0 == index 行):以列为单位操作(参数必须是列),对所有列都有效。 axis=1(1 == columns 列):以行为单位操作(参数必须是行),对所有行都有效。
【注意】fill_value在df和series之间运算时,不能使用

处理丢失数据NaN

  • 有两种丢失数据:
    • None
    • np.nan(NaN)
  • 区别:
    • type(None)是NoneType对象类型,type(np.nan)是float类型
    • None不能运算,np.nan可以运算
    • 数据运算速度,nan明显高于None,计算不同数据类型求和时间
      %timeit np.arange(1e5,dtype=xxx).sum()
  • pandas中None与np.nan都视作np.nan,自动转化

pandas中None与np.nan的操作

  • 判断函数
    • isnull()
    • notnull()
s  = 
A    28.0
B    23.0
C     NaN
D    65.0
E    90.0
Name: a, dtype: float64

s.isnull().any() 	==>True
# DataFrame中,any\all\sum\mean\std函数,需要指定方向
# 使用axis控制方向,可以查看行或列是否存在空值
df		==>
	 0	1	2
0	NaN	8	1
1	1.0	5	2
2	0.0	0	4
df.isnull().any(axis=1)		==>
0     True
1    False
2    False
dtype: bool

  • 过滤函数 dropna()
    df.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
    • axis 用于控制行或列
    • how =any 默认是有一个空值,就过滤掉该行(列)
df  ==>
a	b	c	d	e
A	66.0	51.0	31.0	NaN	6.0
B	34.0	NaN	93.0	NaN	34.0
C	NaN	NaN	100.0	NaN	NaN
D	45.0	1.0	68.0	NaN	76.0
E	53.0	26.0	87.0	NaN	NaN

df.dropna(axis=1, how="all")		==>删除d列数据
  • 填充函数 Series/DataFrame fillna()
    df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
    • value 指定一个特殊的值填充
    • method 指定填充方式(上 ‘backfill’, 左’bfill’,右 ‘pad’,下 ‘ffill’, None)
    • limit 限制填充次数
    • axis=1表示横向填充, 默认填充到不能填充为止
df		==>
	a	b	c	d	e
A	28.0	86.0	98.0	NaN	82.0
B	23.0	NaN	59.0	NaN	44.0
C	NaN	NaN	100.0	NaN	NaN
D	65.0	87.0	84.0	NaN	57.0
E	90.0	36.0	97.0	NaN	NaN

# 1. 指定一个特殊的值填充
# value 指要填充的固定值
df.fillna(value = 1000)	==>
a	b	c	d	e
A	28.0	86.0	98.0	1000.0	82.0
B	23.0	1000.0	59.0	1000.0	44.0
C	1000.0	1000.0	100.0	1000.0	1000.0
D	65.0	87.0	84.0	1000.0	57.0
E	90.0	36.0	97.0	1000.0	1000.0
# 2. 用相邻值填充 
df.fillna(axis=1, method="ffill")
a	b	c	d	e
A	28.0	86.0	98.0	98.0	82.0
B	23.0	23.0	59.0	59.0	44.0
C	NaN	NaN	100.0	100.0	100.0
D	65.0	87.0	84.0	84.0	57.0
E	90.0	36.0	97.0	97.0	97.0

# 3limit限制填充次数
df.fillna(axis=0, method="backfill",limit=1)
  • 指定索引标签来删除行(列)df.drop()
    df.drop(labels, axis=0, level=None, inplace=False, errors=‘raise’)
df   ==>
a	b	c	d	e
A	6.0	94.0	41.0	NaN	13.0
B	64.0	NaN	99.0	NaN	91.0
C	1.0	NaN	100.0	NaN	NaN
D	12.0	43.0	98.0	NaN	89.0
E	35.0	71.0	49.0	NaN	NaN

# 默认删除行,用列表指定行索引
df.drop(labels=["C"])

#删除列
df.drop(labels=["d","c"],axis=1)

# 删除全是空值的列
df.drop(labels=df.loc[:,df.isnull().all()].columns, axis=1)

# 删除包含空值的行
drop_index = df[df.isnull().any(axis=1)].index
df.drop(labels=drop_index)

java使用poi+python的pandas实现导入excel表格中的数据到数据库 1.解析行的时候从第二行开始解析,因为第一行是表头不需要解析 2.解析列的时候也是从第二列开始解析,第一列的id不需要解析,我们插入的时候如果是mysql的话可以设置自增,如果是oracle可以通过触发器在插入数据时后生成我们需要的id 3.对于excel表格中使用科学计数法的列,我们需要在解析的时候进行处理,这里我们处理了number列,以免插入数据库中的数据是2E+08这种格式的。 阅读详情

相关推荐

Pandas学习:系统性的学会Pandas的基本使用

目录1、Pandas数据结构1.1 为什么使用Pandas1.2 Pandas数据结构1.2.1 Series(1)Series的创建(2)Series的属性1.2.2 DataFrame(1)DataFrame的创建(2)DataFrame的属性(3)DatatFrame索引的设置1.2.3 MultiIndex与Panel(1)MultiIndex(2)Panel2、基本数据操作2.1 索引操作2.2.1 直接使用行列索引(先列后行)2.2.2 结合loc或者iloc使用索引2.2.3 使用ix组合.

Ma Sizhou 5068

pandas的java版本,初探pandas——安装和了解pandas数据结构

安装pandas通过python pip安装pandaspip install pandaspandas数据结构pandas常用数据结构包括:Series和DataFrameSeriesSeries是一种一维的数组型对象,包含一个值序列(与numpy中的数据类型相似),数据标签(称为索引(index))。import pandas as pd# 创建Series对象obj=pd.Series([4...

weixin_30969479的博客 2185

Pandas的常见基本使用方法操作

什么是Pandas? Pandas的名称来自于面板数据(panel data)和Python数据分析(data analysis)。 Pandas是一个强大的分析结构化数据的工具集,基于NumPy构建,提供了高级数据结构和数据操作工具,它是使Python成为强大而高效的数据分析环境的重要因素之一。 一个强大的分析和操作大型结构化数据集所需的工具集 基础是NumPy,提...

tigerlib的博客 1万+

pandas的java版本_5分钟入门pandas

pandas是在数据处理、数据分析以及数据可视化上都有比较多的应用,这篇文章就来介绍一下pandas的入门。劳动节必须得劳动劳动1. 基础用法以下代码在jupyter中运行,Python 版本3.6。首先导入 pandasimport pandas as pd# 为了能在jupyter中展示图表%matplotlib inline# 从csv文件读取数据,也可从excel、json文件中读取# 也...

weixin_39631899的博客 4972

Pandas 使用手册.pdf

Python机器学习数据分析中pandas使用工具的详细使用手册!

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 948

Java的Stream和Python的Pandas的对比

Java 中的 Stream 流和 Python 中的 Pandas 库都提供了处理数据的功能,但它们有一些关键的区别。

Mr_lee_1的博客 1266

解决Cursor AI工具地域限制报错的方法与原理

地理围栏(GEO-fencing)是现代云服务常用的访问控制技术,通过IP地址库匹配、支付系统验证等方式实现区域限制。在AI编程工具领域,这种技术常导致类似Cursor出现的'unsupported country region'报错。从技术实现看,服务商会综合HTTP头信息、时区设置等多维度数据进行地理位置判断。开发者可通过调整网络出口、配置本地模型或使用企业版等方案解决。本文以Cursor为例,详细分析了AI工具地域限制的底层原理,并提供了包括Ollama本地部署在内的多种工程实践方案,特别适合需要稳定

weixin_30820077的博客 955

Pandas库基本使用

Pandas库基本使用Pandas库基本使用Pandas库基本使用

Major_S的博客 1万+

黑金AXU9EG开发板深度学习部署全流程解析

本文详细解析了黑金AXU9EG开发板的深度学习模型部署全流程,从环境搭建、模型转换到上板验证,提供了实用的技术指导和优化技巧。该开发板基于Xilinx Zynq UltraScale+ MPSoC架构,特别适合边缘计算场景,通过FPGA加速实现高效AI推理。

weixin_29062613的博客 447

如何使你的直流电机闭环?(PID讲解)

看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解

a2001444的博客 1万+

Pandas的基本使用

文章目录pandas1.关于Pandas1.1为什么使用Pandas1.2Pandas的数据类型2.Pandas——Series2.1Series创建2.2Series切片和索引3.Pandas读取外部数据4.Pandas——DataFrame4.1 DataFrame创建4.2 DataFrame的基础属性5. Pandas索引5.1一般索引,布尔索引5.2 loc与iloc6.缺失数据处理7.Pandas数据合并、分组聚合7.1 一个简单案例7.2 案例二:关于分类合并7.3 数据合并7.3.1 joi

johnny_love_1968的博客 4098

WangEditor 5.0版本dangerouslyInsertHtml方法的正确使用方式

WangEditor 5.0版本dangerouslyInsertHtml方法的正确使用方式

yang1067155909的专栏 4291

Pandas库的基本使用

学习Pandas库的笔记

weixin_41599072的博客 2677

【计算机图形学】Pov-Ray画的垃圾小车

效果: 代码: #include "colors.inc" #include "metals.inc" #include "glass.inc" //相机 //这个位置车子刚好落在草地上了 camera { location direction z*1.5 right x*image_width/image_height look_at

lishichengyan的博客 1749

Handler相关面试题

常见面试题: Handler相关 一.谈一谈你对handler的认识,例如:机制和实现等。 handler机制图解: handler常见使用过程: ①.子线程向主线程发送消息: 在主线程中新建Handler实例,并重写handleMessage()方法用于处理子线程传过来的message; 通过Message.obtain()方法获取到消息msg,然后将需要传递给主线程的信息通过msg的what、obj等字段传递; 通过handler的sendMessage发送msg消息,然后在hand

龚礼鹏的博客 3171

Pandas 基本使用

文章目录一、Pandas介绍1. Pandas介绍2. 为什么使用Pandas3. 小结二、Pandas数据结构1.Series1.1 Series的创建1.2 Series的属性2.DataFrame2.1 DataFrame的创建2.2 DataFrame的属性2.3 DatatFrame索引的设置2.3.1 修改行列索引值2.3.2 重设索引2.3.3 以某列值设置为新的索引3.MultiIndex与Panel3.1 MultiIndex3.1.1 multiIndex的特性3.1.2 multiIn

mengxianglong123的博客 3200

【RT-DETR有效改进】利用MobileNetV3替换Backbone(轻量化网络结构,提点)

本文给大家带来的改进机制是,其主要改进思想集中在结合硬件感知的网络架构搜索(NAS)和NetAdapt算法,以优化移动设备CPU上的性能。它采用了新颖的架构设计,包括反转残差结构和线性瓶颈层,以及新的高效分割解码器Lite Reduced Atrous Spatial Pyramid Pooling(LR-ASPP),以提升在移动分类、检测和分割任务上的表现。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性。

Snu77的博客 2748

pandas基本使用

Pandas 是一个功能强大的数据分析工具,它提供了丰富的数据结构和操作方法,使得数据分析工作变得简单高效。无论是数据清洗、转换还是分析,Pandas 都能提供有效的解决方案。通过本教程,你已经了解了 Pandas 的基本使用方法,包括数据的创建、操作、清洗和导出。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章Pandas 教程 | 菜鸟教程pandas用法-全网最详细教程 - 优快云博客。

ning的博客 1220

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Pandas使用教程-Pandas 简介与安装

Pandas 是 Python 语言中最流行的数据分析和数据处理库之一。它提供了高效的数据结构和操作工具,使得数据清理、转换、分析等任务变得更加便捷。Pandas 主要用于处理表格数据(类似 Excel 表格)和时间序列数据,并且与 NumPy、Matplotlib、Seaborn 等库紧密集成。在本章节中,我们介绍了 Pandas 的基本概念、安装方法以及核心数据结构(Series 和 DataFrame)。我们还学习了如何读取、存储和基本操作 Pandas 数据。在下一章,我们将深入学习。

闲人编程的博客 1901

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Pandas】pandas merge

`pandas.merge` 是 Pandas 库中用于合并两个或多个 DataFrame 的主要函数。这个函数非常灵活,可以通过不同的参数来定制合并的行为。以下是对 `pandas.merge` 每个参数的详细介绍,以及相应的示例和结果。

weixin_39648905的博客 2096

Pandas基本操作

Pandas

m0_58050808的博客 1377

【Pandas】pandas pivot

`pandas.pivot` 是 Pandas 库中用于数据重塑的一个非常有用的方法。它允许你将数据从长格式(long format)转换为宽格式(wide format),基于指定的索引列、列标头和数据值将表格“旋转”或重排,生成一个新的 DataFrame。

weixin_39648905的博客 1315

【Pandas】Pandas output

在pandas库中,to_excel方法用于将DataFrame对象导出到Excel文件中。这是一个非常有用的功能,特别是当你需要将数据分析的结果以表格形式保存或分享时。

weixin_39648905的博客 1905

【Pandas】pandas eval

`pandas.eval()` 是 Pandas 库中用于高效计算表达式的函数。它利用 NumExpr 库(如果已安装)来加速算术运算,并且可以直接操作 Pandas 的 DataFrame 和 Series 对象。下面是对 `pandas.eval()` 函数每个参数的详细介绍,以及示例和结果。

weixin_39648905的博客 1637
上一篇: numpy简单使用
下一篇: pandas的高级使用
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值