【Python 数据处理】Pandas

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。

Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。

目录

一、Pandas Series——列,一维数据

1.加载和使用 pandas

2.pd.Series

生成Series

查看数据data

修改数据data

查看索引index

修改索引并自动对齐

pd.Series相关函数

二、Pandas DataFrame——数据框,二维数据

1.pd.DataFrame

生成DataFrame

一、Pandas Series——列,一维数据

Series是一种类似于一维数组的对象,它由一组 数据data(各种Numpy数据类型)以及一组与之相关的 数据标签(即索引)index组成。

Series 类似Excel表格中的一个列(column),类似于一维数组,可以保存任何数据类型。

【Python 数据处理】Pandas

1.加载和使用 pandas

import pandas as pd  #一般别名为pd
pd.函数名             #调用pandas函数

2.pd.Series

生成Series

pandas.Series( data, index, dtype, name, copy)
#参数说明:
#函数名Series中,S开头大写

#data:一组数据(ndarray 类型)。

#index:数据索引标签,如果不指定,默认从 0 开始。可自行设置,索引数据可重复,不一定为自然数列
#index数量必须与data数量一致

#dtype:数据(data)的数据类型,默认会自己判断。

#name:设置名称。

#copy:拷贝数据,默认为 False。

方式一:通过函数定义生成列

#方式一:通过函数定义生成列
import pandas as pd
a = ["ni", "hao", "ma"]
my_s = pd.Series(a, index = ["x", "y", "z"])
print(my_s)

#输出结果:
x     ni
y    hao
z     ma
dtype: object

方式二:通过字典生成列

#方式二:通过字典生成列
import pandas as pd
a = {"x":"ni", "y":"hao", "z":"ma"}
my_s = pd.Series(a)
print(my_s)

#输出结果:
x     ni
y    hao
z     ma
dtype: object

查看数据data

#查看:根据索引查看数据
import pandas as pd
a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"])
print(myvar["y"])

#输出结果:Runoob

#查看:所有数据:Series名.values
import pandas as pd
a = ["ni", "hao", "ma"]
my_s = pd.Series(a, index = [1, 2, 3])
print(my_s.values)

#输出结果:['ni' 'hao' 'ma']

a = [1, 2, 3]
my_s = pd.Series(a, index = ["x", "y", "z"])
print(my_s.values)

#输出结果:[1 2 3]

修改数据data

#修改数据
myvar["y"] = "happy"
print(myvar["y"])

#输出结果:happy

查看索引index

#查看所有索引,以及索引的数据类型:Series名.index
import pandas as pd
a = ["ni", "hao", "ma"]
my_s = pd.Series(a, index = [1, 2, 3])
print(my_s.index)

#输出结果:Int64Index([1, 2, 3], dtype='int64')

a = [1, 2, 3]
my_s = pd.Series(a, index = ["x", "y", "z"])
print(my_s.index)
#输出结果:Index(['x', 'y', 'z'], dtype='object')

修改索引并自动对齐


import pandas as pd
a = [1, 2, 3]
my_s1 = pd.Series(a)
0    1
1    2
2    3
dtype: float64

#修改索引:
#方式一:
my_s1.index = ["x", "y", "z"]
#方式二:
my_s1 = pd.Series(a, index = ["x", "y", "z"])

x    1.0
y    2.0
z    3.0
dtype: float64

#修改索引并自动对齐
my_s2 = pd.Series(my_s1,index=["n","x", "y", "z"])
#原基础上增加索引"n",且其他索引不变,则索引可自动对齐

n    NaN       #新增索引,并赋值NaN
x    1.0       #其他索引自动对齐并对应原值
y    2.0
z    3.0
dtype: float64

my_ind = [1,2,3]
my_s3 = pd.Series(my_s2,index=my_ind)
#自定义全新的索引,由于定义的索引均未能与原Series的索引对应,因此均赋值为NaN

1   NaN
2   NaN
3   NaN
dtype: float64

查看数据类型

type()

pd.Series相关函数

my_s.copy() 复制列
my_s.all()  判断列内所有值都符合某条件

二、Pandas DataFrame——数据框,二维数据

DataFrame 是一个二维表格,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。

DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引),与Excel的二维表格相同。

1.pd. DataFrame

pandas.DataFrame( data, index, columns, dtype, copy)

#data:一组数据(ndarray、series, map, lists, dict 等类型)。

#index:索引值,或者可以称为行标签。

#columns:列标签,默认为 RangeIndex (0, 1, 2, ..., n) 。

#dtype:数据类型。

#copy:拷贝数据,默认为 False。

生成 DataFrame

方式一:通过列表生成

可理解为:先定义数据,再定义行标签,列标签

方式二:使用 ndarrays 生成

ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度

可理解为:先定义 {列标签1:第1列所有数据,列标签2:第2列所有数据} 格式的字典,再定义行标签,其中各列数据长度相同,行标签长度=整列长度

方式三:使用字典生成

可理解为:先定义每行数据[ {列标签1:第1行数据,列标签2:第1行数据}, {列标签1:第2行数据,列标签2:第2行数据}]格式

     Site  Age
1  Google   10
2  Runoob  NaN
3    Wiki   13

#方式一:使用列表创建
data = [['Google',10],['Runoob'],['Wiki',13]]
#逐行定义数据,第2行AGE无数据可不写
df = pd.DataFrame(data,index=[1,2,3], columns=['Site','Age'] )

#方式二:使用ndarrays 创建
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, "NaN", 13]}
#因要求ndarrays长度相同,age中必须输入NaN
df = pd.DataFrame(data,index=[1,2,3])

#方式三:使用字典创建
data = [{'Site':'Google','Age':10}, {'Site':'Runoob'},{'Site':'Wiki','Age':13}]
#逐行定义数据,第2行AGE无数据可不写
df = pd.DataFrame(data,index=[1,2,3])

查看和修改列标签

变更列标签的顺序

#列标签顺序默认按data顺序排列
import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, "NaN", 13]}
df = pd.DataFrame(data,index=[1,2,3])
print (df)
     Site  Age
1  Google   10
2  Runoob  NaN
3    Wiki   13

#查看列标签
print(df.columns)
#输出结果:Index(['Site', 'Age'], dtype='object')

#变更列标签的顺序
df = pd.DataFrame(df,index=[1,2,3],columns=['Age','Site'])
print (df)
   Age    Site
1   10  Google
2  NaN  Runoob
3   13    Wiki

#新增列
df = pd.DataFrame(df,columns=['Age','Phone','Site'])
   Age  Phone    Site
1   10    NaN  Google
2  NaN    NaN  Runoob
3   13    NaN    Wiki

修改行标签

import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, "NaN", 13]}
df = pd.DataFrame(data,index=[1,2,3])
print (df)
     Site  Age
1  Google   10
2  Runoob  NaN
3    Wiki   13

df = pd.DataFrame(df,index= [3,1,4])
#修改行标签后,原有标签3,1将自动对齐数据,新增的4无数据赋值NaN
     Site  Age
3    Wiki   13
1  Google   10
4     NaN  NaN

查看和修改数据

查询某列数据:df名[列名]

查看某行数据:df.loc[行标签名]

修改某列数据:统一给某列赋值:df名[列名]=

修改某列数据:点对点某列赋值:先定义一列Series,再赋值至某列中

修改某个数据:点对点某个数据赋值

   Age  Phone    Site
1   10    NaN  Google
2  NaN    NaN  Runoob
3   13    NaN    Wiki

#查询某列数据
print(df['Age'])
#输出结果:
1     10
2    NaN
3     13
Name: Age, dtype: object

#查询某行数据
print(df.loc[1])
Age          10
Phone     123.0
Site     Google
Name: 1, dtype: object

#统一给某列赋值
df['Phone']=123456
   Age   Phone    Site
1   10  123456  Google
2  NaN  123456  Runoob
3   13  123456    Wiki

#修改某列的某几个值
phone1 = pd.Series([123,456],index=(1,3))
df['Phone'] = phone1
   Age  Phone    Site
1   10  123.0  Google
2  NaN    NaN  Runoob
3   13  456.0    Wiki

Original: https://blog.csdn.net/weixin_41042487/article/details/124309299
Author: weixin_41042487
Title: 【Python 数据处理】Pandas

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

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

(0)

大家都在看

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