首页 > 其他分享 >pandas

pandas

时间:2024-01-17 15:23:00浏览次数:26  
标签:Series np pd print import pandas

语句定义格式

import pandas as pd
s=pd.Series( data, index, dtype, copy)

data 输入的数据,可以是列表、常量、ndarray 数组等。

index 索引值必须是惟一的,如果没有传递索引,则默认为 np.arrange(n)。

dtypedtype 表示数据类型,如果没有提供,则会自动判断得出。

copy 表示对 data 进行拷贝,默认为 False。

也可以使用数组、字典、标量值或者 Python 对象来创建 Series 对象。

========================================

创建一个空的Series对象

import pandas as pd
import numpy as np
s=pd.Series([],dtype='float64')
print(s)

使用矩阵ndarray创建Series对象

import pandas as pd
import numpy as np
data=np.array(['a','b','c','d'])
s=pd.Series(data)
print(s)

没有传递任何索引,所以索引默认从 0 开始分配 ,其索引范围为 0 到len(data)-1,即 0 到 3。这种设置方式被称为“隐式索引”

=======================================

显示索引

import pandas as pd
import numpy as np
data=np.array(['a','b','c','d'])
s=pd.Series(data,index=[101,102,103,104])
print(s)

python字典dict创建Series对象

没有传递索引时

import pandas as pd
import numpy as np
dict1={'aa001':'小虎','bb001':'小杰','cc001':'小阳','dd001':'小超'}
pd2=pd.Series(dict1)
print(pd2,type(pd2))

index参数传递索引时

import pandas as pd
import numpy as np
dict1={'aa001':'小虎','bb001':'小杰','cc001':'小阳','dd001':'小超'}
pd2=pd.Series(dict1)
print(pd2,type(pd2))

小总结:

1.如果一开始没有索引,index的作用是加索引,如果超出值的个数,报错
2.如果一开始有索引,index的作用是取对应的索引,如果索引没有的话,值对应NaN

标量固定值创建

import pandas as pd
import numpy as np
pd3=pd.Series(dict1,index=['aa001','cc001','dd001'])
print(pd3,type(pd3))

Series

位置索引访问

import pandas as pd
import numpy as np
pd3=pd.Series(dict1,index=['aa001','cc001','dd001'])
print(pd3,type(pd3))
pd4=pd.Series(100,index=[101,102,103,104,105])
print(pd4,type(pd4))

索引标签访问

import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5], index = ['a', 'b', 'c', 'd', 'e'])
print(s[2])

如果索引不是默认的话,需要我们使用定义的索引来获取,如果数据是列表这样的本身就有索引的数据的话,可以通过0-n的方式获取

=====================================

通过切片的方式访问 Series 序列中的数据

import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5], index = ['a', 'b', 'c', 'd', 'e'])
print(s[3:]) #从第三行开始取
print(s[:3]) #倒着取三行
print(s[5:]) #从第五行开始取

索引值是左闭右开

=====================================

索引标签访问(常用!)##

Series 类似于固定大小的 dict,把 index 中的索引标签当做 key,而把 Series 序列中的元素值当做 value,然后通过 index 索引标签来访问或者修改元素值。

====================================

使用索标签访问单个元素值

如果不存在会报错 KeyError: 'f'

import pandas as pd
import numpy as np
s1=pd.Series([6,7,8,9,10],index = ['a', 'b', 'c', 'd', 'e'])
print(s['b'])

使用索引标签访问多个元素值

import pandas as pd
import numpy as np
s1=pd.Series([6,7,8,9,10],index = ['a', 'b', 'c', 'd', 'e'])
print(s1[['a','b']])

Series常用属性

名称 属性
axes 以列表的形式返回所有行索引标签。
dtype 返回对象的数据类型。
ndim 返回输入数据的维数。
size 返回输入数据的元素数量。
values 以 ndarray 的形式返回 Series 对象。
index 返回一个RangeIndex对象,用来描述索引的取值范围。
empty 返回一个空的 Series 对象。

===================================

随机创建一个Series数据

import pandas as pd
import numpy as np
array1=np.array([11,22,33,44,55,66])
pd3=pd.Series(array1,index=[101,102,103,104,105,106])
print(pd3,type(pd3))

axes

import pandas as pd
import numpy as np
s=pd.Series(np.random.random(5))
print(s.axes)

dtype

import pandas as pd
import numpy as np
s=pd.Series(np.random.randn(5))
print(s.dtype)

empty 返回一个布尔值,用于判断数据对象是否为空

import pandas as pd
import numpy as np
s=pd.Series(np.random.randn(5))
print(s.empty)

ndim 查看序列的维数。因为Series 是一维数据结构,因此它始终返回 1

import pandas as pd
import numpy as np
s=pd.Series(np.random.randn(5))
print(s)
print(s.ndim)

size 返回 Series 对象的大小(长度)

import pandas as pd
import numpy as np
s=pd.Series(np.random.randn(5))
print(s)
print(s.size)

values 以数组的形式返回 Series 对象中的数据。

import pandas as pd
import numpy as np
s=pd.Series(np.random.randn(6))
print(s)
print(s.values)

index 用来查看 Series 中索引的取值范围

import pandas as pd
import numpy as np
s=pd.Series([1,2,5,8],index=['a','b','c','d'])
print(s.index)
s1=pd.Series([1,2,5,8])
print(s1.index)

head() 默认显示前5条

tail() 取后几条 默认取后5条

import pandas as pd
import numpy as np
s=pd.Series([1,2,5,8],index=['a','b','c','d'])
print(s)
print(s.head(2))
print(s.tail(2))
import pandas as pd
import numpy as np

isnull() 和notnull()

isnull():如果为值不存在或者缺失,则返回 True。

notnull():如果值不存在或者缺失,则返回 False。

import pandas as pd
import numpy as np
s=pd.Series([1,2,5,None])
print(pd.isnull(s))
print(pd.notnull(s))

对列操作,默认使用 axis=1 或者使用 “columns”

对行操作,默认使用 axis=0 或者使用 “index”

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
d = {'Name':pd.Series(['小虎','小杰','小龙','小明','小赵','小李','小陈','老李','老王','小唐','老覃','小阳']),
'Age':pd.Series([25,26,25,23,18,29,18,14,19,20,24,21]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}

数据创建

df=pd.DataFrame(d)
print(df)

sum()求和

df=pd.DataFrame(d)
print(df.sum())
print(df.sum(axis=1))

mean()求均值

df=pd.DataFrame(d)
print(df.mean())

std()求标准差

df=pd.DataFrame(d)
print(df.std())

注意,平均数相同的两组数据,标准差未必相同。

describe() 函数显示与 DataFrame 数据列相关的统计信息摘要。

df=pd.DataFrame(d)
print(df.describe())

Pandas csv读写文件

read_csv()读文件

传数据字符串,即CSV中的数据字符以字符串形式直接传入:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

`from io import StringIO
data=('col1,col2,col3\n'
'a,b,1\n'
'a,b,2\n'
'c,d,3')
pd.read_csv(StringIO(data))
pd.read_csv(StringIO(data),dtype=object)

pd.read_csv(data,sep='\t')
pd.read_csv('demo.csv')

pd.read_csv(StringIO(data))
print(pd.read_csv(StringIO(data),dtype=object))

分隔符

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

data1=pd.read_csv("D:\projects\PyCharmProjects\d10\demo1.csv",encoding='gbk',sep=",|:|;",engine="python",header=0)
data2=pd.read_csv("D:\projects\PyCharmProjects\d10\demo.csv",encoding='gbk',sep=",|:|;",engine="python",header=0)
print(data1)
print(data2)

index_col 这个参数是用来决定读进来的数据哪一列做索引的,这个参数的缺省值是False,就是什么都不做的意思,第一列在Python里被标做1:(从0开始)。

data3=pd.read_csv("D:\projects\PyCharmProjects\d10\demo1.csv",encoding='gbk',index_col=4)
print(data3)

usecols 这个参数可以指定你从文件中读取哪几列。

data4=pd.read_csv("D:\projects\PyCharmProjects\d10\demo1.csv",encoding='gbk',usecols=[4,6])
print(data4)

nrows 指定读取记录多少行

data5=pd.read_csv('D:\projects\PyCharmProjects\d10\demo1.csv',encoding='gbk',nrows=12)
print(data5)

==================================================
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams["font.family"] = "FangSong" # 设置字体
mpl.rcParams["axes.unicode_minus"] = False # 正常显示负号
print(np.random.rand(10,4), type(np.random.rand(10,4)))
list1 = [
[99, 98, 97, 95, 89],
[89, 98, 76, 90, 88],
[76, 90, 98, 89, 89],
[99, 98, 97, 95, 89],
[96, 88, 93, 92, 99],
[94, 92, 98, 93, 81],
[92, 91, 91, 98, 81]
]
array1=np.array(list1)
df=pd.DataFrame(array1,index=['第1次测试','第2次测试','第3次测试','第4次测试','第5次测试','第6次测试','第7次测试'],columns=['第一组','第二组','第三组','第四组','第五组'])
df.plot.bar()
plt.xticks(rotation=360)
plt.show()
`

sep参数是字符型的,代表每行数据内容的分隔符号,默认是逗号,另外常见的还有制表符(\t)、空格等,根据数据的实际情况传值。

数据分隔符默认是逗号,可以指定为其他符号

pd.read_csv(data, sep='\t') # 制表符分隔tab
pd.read_table(data) # read_table 默认是制表符分隔tab>
pd.read_csv(data, sep='|') # 制表符分隔tab
pd.read_csv(data,sep="(?<!a)|(?!1)", engine='python') # 使用正则表达式

`import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
array2=np.array(list1)
df2=pd.DataFrame(array2,index=['第1次测试','第2次测试','第3次测试','第4次测试','第5次测试','第6次测试','第7次测试'],columns=['第一组','第二组','第三组','第四组','第五组'])
print(df2)
df2.plot.barh(stacked=True)
plt.xticks(rotation=360)
plt.show()

data1={'x':[1,2,3,4,5],'y':[2,4,6,8,10]}
df3=pd.DataFrame(data1)
df.plot(kind='scatter',x='x',y='y')
plt.show()

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams["font.family"] = "FangSong" # 设置字体
mpl.rcParams["axes.unicode_minus"] = False # 正常显示负号
data1 = pd.Series({'中专': 0.2515, '大专': 0.3724, '本科': 0.3336, '硕士': 0.0368, '其他': 0.0057})

将序列的名称设置为空字符,否则绘制的饼图左边会出现None这样的字眼

data1.name = ''

控制饼图为正圆

plt.axes(aspect='equal')

plot方法对序列进行绘图

data1.plot(kind='pie', # 选择图形类型
autopct='%.1f%%', # 饼图中添加数值标签
radius=1, # 设置饼图的半径
startangle=180, # 设置饼图的初始角度
counterclock=False, # 将饼图的顺序设置为顺时针方向
title='失信用户的受教育水平分布', # 为饼图添加标题
wedgeprops={'linewidth': 1.5, 'edgecolor': 'green'}, # 设置饼图内外边界的属性值
textprops={'fontsize': 10, 'color': 'black'}) # 设置文本标签的属性值
plt.show()
`

标签:Series,np,pd,print,import,pandas
From: https://www.cnblogs.com/pecular/p/17970092

相关文章

  • 一个excel文件,我用pandas如何取行,只能用pandas?
    大家好,我是皮皮。一、前言前几天在Python白银交流群粉丝问了一个Pandas数据筛选的问题。问题如下:我突然想到,如果一个excel文件,我用pandas如何取行,只能用pandas。二、实现过程后来【月神】给了一个思路和代码如下:其实粉丝之前也问了一个类似的花式索引的问题,可能时就间太久......
  • Python Pandas 数据分析项目实例
    ​ 假设我们有一个电子商务公司的销售数据,包含了客户购买记录、商品价格、购买日期等信息。我们的目标是分析这些数据,提取有价值的信息,例如总销售额、最畅销的产品、销售趋势等。1、安装引用Pandas如没有安装Pandas,可以通过pip安装它。参考下面的文档。然后在Python脚本......
  • pandas典型应用
    #header默认为0,即以第一列为列名,这里设为None,意味不设置第一行为列名;df11=pd.read_table(url,header=None)df11.head()#names=***,可以自定义设置列名user_cols=['id','quantity','name','choice','price']df=pd.read_table(url,header=None......
  • 在 Pandas 中,`and` 和 `or` 是 Python 中的关键字,用于逻辑运算。但是在 Pandas 中,我们
    在Pandas中,`and`和`or`是Python中的关键字,用于逻辑运算。但是在Pandas中,我们使用`&`和`|`来表示逻辑与和逻辑或。这是因为在Pandas中,`and`和`or`会产生歧义,而`&`和`|`则不会。因此,在Pandas中,我们应该使用`&`和`|`来表示逻辑与和逻辑或,而不是`and`和......
  • # yyds干货盘点 # pandas单独设一个新列,譬如从2023-11-1到2023-11-31怎么搞法?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas日期数据生成的问题,问题如下:大佬们,如果我想单独设一个新列,譬如从2023-11-1到2023-11-31怎么搞法?或者这个数据有11行,可不可以自行设置成2023-11-15到2023-11-26这样子。二、实现过程后来【论草莓如何......
  • 您好!您可以使用Python中的Pandas库来转换数据框为思维导图和流程图。以下是一些代码片
    您好!您可以使用Python中的Pandas库来转换数据框为思维导图和流程图。以下是一些代码片段,可帮助您开始:-要将数据框转换为思维导图,请使用`graphviz`库。您可以使用以下代码片段:```pythonfromgraphvizimportDigraphimportpandasaspddf=pd.DataFrame({'A':[1,2,3],'B......
  • 盘点一个Pandas取值的问题(下篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据提取的问题,上一篇文章我们介绍了基础篇,这一篇文章我们来延伸下,你想象下,我想要14和15行该怎么写?二、实现过程后来【论草莓如何成为冻干莓】给了一份代码,print(df.loc[[14,15],'作者':'回复'])。......
  • Python Pandas 数据清洗
    ​ 1、处理缺失数据处理缺失数据是数据清洗过程的一个重要部分。缺失数据可以以多种方式出现,最常见的是作为NaN(NotaNumber)。处理缺失数据涉及使用 isna() 或 isnull() 检测缺失值,fillna() 填充缺失值,dropna() 删除包含缺失值的行或列,以及 interpolate() 对缺失值进......
  • pandas基础使用
    pandaspandas介绍Pandas是一个开源的数据分析和数据处理库,它是基于Python编程语言的。Pandas提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。Pandas是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据......
  • # yyds干货盘点 # 盘点一个Pandas取值的问题(下篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据提取的问题,上一篇文章我们介绍了基础篇,这一篇文章我们来延伸下,你想象下,我想要14和15行该怎么写?二、实现过程后来【论草莓如何成为冻干莓】给了一份代码,print(df.loc[[14,15],'作者':'回复'])。......