当前位置: 首页> 汽车> 行情 > 乐清在线网_山西网站建设适合v加xtdseo_快速优化工具_百度怎么联系客服

乐清在线网_山西网站建设适合v加xtdseo_快速优化工具_百度怎么联系客服

时间:2025/7/11 14:52:05来源:https://blog.csdn.net/2201_75404438/article/details/147070979 浏览次数: 1次
乐清在线网_山西网站建设适合v加xtdseo_快速优化工具_百度怎么联系客服

一.常用的统计学函数

函数名称描述说明
count()统计某个非空值的数量
sum()求和
mean()求均值
median()求中位数
std()求标准差
min()求最小值
max()求最大值
abs()求绝对值
prod()求所有数值的乘积

 以上函数可通过axis参数来调节列/行/总体

注意:numpy的方差默认为总体方差pandas默认为样本方差(N-1)

二.重置索引

重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行、列标签与 DataFrame 中的数据逐一匹配,返回一个新对象

语法:

DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=np.nan, limit=None, tolerance=None)

比较重要参数

  • lables :传入数组或列表
  • index  :新行索引标签
  • columns :新列索引标签
  • axis:指定索引轴 0/行 1/列 

案例:

# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])# 重新索引行
new_index = ['a', 'b', 'c', 'd']
df_reindexed = df.reindex(new_index)
print(df_reindexed)# 重新索引列
new_columns = ['A', 'B', 'C', 'D']
df_reindexed = df.reindex(columns=new_columns)
print(df_reindexed)

三.遍历

3.1series遍历

在pandas基础里面可学习

3.2DataFrame遍历

如直接用for循环遍历dataframe得到的为列标签

3.2.1遍历行

itertuples() 方法用于遍历 DataFrame 的行,返回一个包含行数据的命名元组

如itertuples(index=False)则可以忽略索引

import pandas as pd# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])# 使用 itertuples() 遍历行
for row in df.itertuples():print(row)for i in row:print(i)
#输出:
Pandas(Index='a', A=1, B=4, C=7)
a
1
4
7
Pandas(Index='b', A=2, B=5, C=8)
b
2
5
8
Pandas(Index='c', A=3, B=6, C=9)
c
3
6
9

3.2.2遍历列

items() 方法用于遍历 DataFrame 的列,返回一个包含列名和列数据的迭代器

import pandas as pd# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])# 使用 items() 遍历列
for column_name, column_data in df.items():print(f"Column Name: {column_name}, Column Data: {column_data}")
#输出:
Column Name: A, Column Data: a    1
b    2
c    3
Name: A, dtype: int64
Column Name: B, Column Data: a    4
b    5
c    6
Name: B, dtype: int64
Column Name: C, Column Data: a    7
b    8
c    9
Name: C, dtype: int64

3.2.3使用属性遍历

loc 和 iloc 方法可以用于按索引或位置遍历 DataFrame 的行和列

可直接用嵌套循环直接访问每个元素,loc与iloc的使用在pandas基础里存在

四.排序

4.1sort_index

sort_index 方法用于对 DataFrame 或 Series 的索引进行排序

语法:

DataFrame.sort_index(axis=0, ascending=True, inplace=False)
Series.sort_index(axis=0, ascending=True, inplace=False)

参数:

  • ascending:布尔值,指定是升序排序(True)还是降序排序(False)
  • inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的排序后的对象
import pandas as pd# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['b', 'c', 'a'])# 按行索引标签排序,不对对应的值排序
df_sorted = df.sort_index()
#输出:A  B  C
a  3  6  9
b  1  4  7
c  2  5  8

4.2sort_values

sort_values 方法用于根据一个或多个列的值对 DataFrame 进行排序

语法:

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')

参数:

  • by:指定要排序的列。

  • axis: 0按行排序  1按列排序。

  • ascending:布尔值或布尔值列表,指定是升序排序(True)还是降序排序(False)。可以为每个列指定不同的排序方向。

  • inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的排序后的对象。

  • kind:排序算法。默认为 'quicksort',也可以选择 'mergesort'(归并排序) 或 'heapsort'(堆排序)。

  • na_position:指定缺失值(NaN)的位置。可以是 'first' 或 'last'。

import pandas as pd# 创建一个示例 DataFrame
data = {'A': [3, 2, 1],'B': [6, 5, 4],'C': [9, 8, 7]
}
df = pd.DataFrame(data, index=['b', 'c', 'a'])# 按列 'A' 排序
df_sorted = df.sort_values(by='A')
print(df_sorted)# 按列 'A' 和 'B' 排序
df_sorted = df.sort_values(by=['A', 'B'])
print(df_sorted)#  A  B  C
a  1  4  7
c  2  5  8
b  3  6  9A  B  C
a  1  4  7
c  2  5  8
b  3  6  9

五.去重

drop_duplicates 方法用于删除 DataFrame 或 Series 中的重复行或元素

语法

drop_duplicates(by=None, subset=None, keep='first', inplace=False)


Series.drop_duplicates(keep='first', inplace=False)

参数:

  • by:用于标识重复项的列名或列名列表。如果未指定,则使用所有列。(数据多情况下)

  • subset:与 by 类似,但用于指定列的子集。

  • keep:指定如何处理重复项。可以是:

    • 'first':保留第一个出现的重复项(默认值)。

    • 'last':保留最后一个出现的重复项。

    • False:删除所有重复项。

  • inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的删除重复项后的对象。

def eight():# 创建一个示例 DataFramedata = {'A': [1, 2, 2, 3],'B': [4, 5, 5, 6],'C': [7, 8, 8, 9]}df = pd.DataFrame(data)# 删除所有列的重复行,默认保留第一个出现的重复项df_unique = df.drop_duplicates()print(df_unique)# 删除重复行,保留最后一个出现的重复项df_unique = df.drop_duplicates(keep='last')print(df_unique)eight()'''A  B  C
0  1  4  7
1  2  5  8
3  3  6  9A  B  C
0  1  4  7
2  2  5  8
3  3  6  9
'''

六.分组

6.1groupby

groupby,你可以将数据集按照某个列(或多个列)的值分组(重要)

语法:

DataFrame.groupby(by, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)  **返回一个DataFramegroupby对象**

参数

  • by:用于分组的列名或列名列表

  • axis:指定沿着哪个轴进行分组。默认为 0,表示按行分组。

  • level:用于分组的 MultiIndex 的级别。

  • as_index:布尔值,指定分组后索引是否保留。如果为 True,则分组列将成为结果的索引;如果为 False,则返回一个列包含分组信息的 DataFrame。

  • sort:布尔值,指定在分组操作中是否对数据进行排序。默认为 True。

  • group_keys:布尔值,指定是否在结果中添加组键。

  • squeeze:布尔值,如果为 True,并且分组结果返回一个元素,则返回该元素而不是单列 DataFrame。

  • observed:布尔值,如果为 True,则只考虑数据中出现的标签。

​
import pandas as pd# 创建一个示例 DataFramedata = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C': [1, 2, 3, 4, 5, 6, 7, 8],'D': [10, 20, 30, 40, 50, 60, 70, 80]}df = pd.DataFrame(data)# 按列 'A' 分组grouped = df.groupby('A')# 查看分组结果for name, group in grouped:print(f"Group: {name}")print(group)print()mean = df.groupby(['A']).mean()print(mean)#输出:C     DA             bar  4.0  40.0foo  4.8  48.0mean = grouped['C'].mean()    #直接选取c列  print(mean)#输出:Abar    4.0foo    4.8​

6.2filter

通过 filter() 函数可以实现数据的筛选

import pandas as pd# 创建一个示例 DataFramedata = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C': [1, 2, 3, 4, 5, 6, 7, 8],'D': [10, 20, 30, 40, 50, 60, 70, 80]}df = pd.DataFrame(data)# 按列 'A' 分组,并过滤掉列 'C' 的平均值小于 4 的组
filtered = df.groupby('A').filter(lambda x: x['C'].mean() >= 4)print(filtered)

七.合并

merge 函数用于将两个 DataFrame 对象根据一个或多个键进行合并,类似于 SQL 中的 JOIN 操作

语法:

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

参数:根据需要参考

  • left:左侧的 DataFrame 对象。

  • right:右侧的 DataFrame 对象。

  • how:合并方式,可以是 'inner'、'outer'、'left' 或 'right'。默认为 'inner'。

    • 'inner':内连接,返回两个 DataFrame 共有的键。

    • 'outer':外连接,返回两个 DataFrame 的所有键。

    • 'left':左连接,返回左侧 DataFrame 的所有键,以及右侧 DataFrame 匹配的键。

    • 'right':右连接,返回右侧 DataFrame 的所有键,以及左侧 DataFrame 匹配的键。

  • on:用于连接的列名。如果未指定,则使用两个 DataFrame 中相同的列名。

  • left_on 和 right_on:分别指定左侧和右侧 DataFrame 的连接列名。

  • left_index 和 right_index:布尔值,指定是否使用索引作为连接键。

  • sort:布尔值,指定是否在合并后对结果进行排序。

  • suffixes:一个元组,指定当列名冲突时,右侧和左侧 DataFrame 的后缀。

  • copy:布尔值,指定是否返回一个新的 DataFrame。如果为 False,则可能修改原始 DataFrame。

  • indicator:布尔值,如果为 True,则在结果中添加一个名为 __merge 的列,指示每行是如何合并的。

  • validate:验证合并是否符合特定的模式。

import pandas as pd
#左连接# 创建两个示例 DataFrame
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']
})right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K4'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']
})# 左连接,以左侧表为准
result = pd.merge(left, right, on='key', how='left')print(result)
# 输出:key   A   B    C    D
0  K0  A0  B0   C0   D0
1  K1  A1  B1   C1   D1
2  K2  A2  B2   C2   D2
3  K3  A3  B3  NaN  NaN

八.随机抽样

语法:

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

参数

  • n:要抽取的行数

  • frac:抽取的比例,比如 frac=0.5,代表抽取总体数据的50%

  • replacer:布尔值参数,表示是否以有放回抽样的方式进行选择,默认为 False,取出数据后不再放回

  • weights:可选参数,代表每个样本的权重值,参数值是字符串或者数组

  • random_state:可选参数,控制随机状态,默认为 None,表示随机数据不会重复;若为 1 表示会取得重复数据

  • axis:表示在哪个方向上抽取数据(axis=1 表示列/axis=0 表示行)

​
import pandas as pddef eleven():df = pd.DataFrame({"company": ['百度', '阿里', '腾讯'],"salary": [43000, 24000, 40000],"age": [25, 35, 49]})print('随机选择两行:')print(df.sample(n=2, axis=0))print('随机选择一列:')print(df.sample(n=1, axis=1))print('总体的50%:')print(df.sample(axis=0, frac=0.5))eleven()'''随机选择两行:company  salary  age
0      百度   43000   25
1      阿里   24000   35
随机选择一列:company
0      百度
1      阿里
2      腾讯
总体的50%:company  salary  age
0      百度   43000   25
1      阿里   24000   35'''​

九.空值处理

函数名语法说明
isnull()/notnull()df.isnull()isnull()用于检测 DataFrame 或 Series 中的空值,返回一个布尔值的 DataFrame 或 Series。notnull()相反
fillna()df.fillna(0)fillna() 方法用于填充 DataFrame 或 Series 中的空值
dropna()df.dropna()dropna() 方法用于删除 DataFrame 或 Series 中的空值

 

十.读取csv文件 

CSV(Comma-Separated Values)其文件以纯文本形式存储表格数据

函数名语法说明
to_csv()df.to_csv('output.csv', index=False)to_csv() 方法将 DataFrame 存储为 csv 文件
read_csv()df = pd.read_csv('output.csv')read_csv() 表示从 CSV 文件中读取数据,并创建 DataFrame 对象

括号里的为文件路径

十一.绘图(需要再用)

Pandas 在数据分析、数据可视化方面有着较为广泛的应用,Pandas 对 Matplotlib 绘图软件包的基础上单独封装了一个plot()接口,通过调用该接口可以实现常用的绘图操作,主要利用了 Matplotlib 库的 plot() 方法

import pandas as pd
import matplotlib.pyplot as plt# 创建一个示例 DataFrame
data = {'A': [1, 2, 3, 4, 5],'B': [10, 20, 25, 30, 40]
}
df = pd.DataFrame(data)# 绘制折线图
df.plot(kind='line')
# 显示图表
plt.show()# 绘制柱状图
df.plot(kind='bar')
# 显示图表
plt.show()# 绘制直方图
df['A'].plot(kind='hist')
# 显示图表
plt.show()# 绘制散点图
df.plot(kind='scatter', x='A', y='B')
# 显示图表
plt.show()

关键字:乐清在线网_山西网站建设适合v加xtdseo_快速优化工具_百度怎么联系客服

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: