python三大库之---pandas(二)

python三大库之—pandas(二)

文章目录

  • python三大库之---pandas(二)
  • 六,函数
    • 6.1、常用的统计学函数
    • 6.2重置索引
    • 6.3 遍历
      • 6.3.1DataFrame 遍历
      • 6.3.2 itertuples()
      • 6.3.3 使用属性遍历
    • 6.4 排序
      • 6.4.1 sort_index
      • 6.4.2 sort_values
    • 6.5 去重
    • 6.6 分组
      • 6.6.1 groupby
      • 6.6.2 filter
    • 6.7 合并
    • 6.8 随机抽样
    • 6.9空值处理
      • 6.9.1 检测空值
      • 6.9.2 填充空值
      • 6.9.3 删除空值
  • 七,读取CSV文件
    • 7.1 to_csv()
    • 7.2 read_csv()
  • 八,绘图


六,函数

6.1、常用的统计学函数

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

numpy的方差默认为总体方差,pandas默认为样本方差

#常用的统计学函数
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print(df.mean())#计算均值
print(df.median())#计算中位数
print(df.mode())#计算众数
print(df.var())#计算方差
print(df.std())#计算标准差
print(df.sum())#计算总和
print(df.min())#计算最小值
print(df.max())#计算最大值
print(df.count())#计算非空值的个数
print(df.prod())#计算乘积
print(df.abs())#计算绝对值
A     2.5
B     6.5
C    10.5
dtype: float64
A     2.5
B     6.5
C    10.5
dtype: float64A  B   C
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12
A    1.666667
B    1.666667
C    1.666667
dtype: float64
A    1.290994
B    1.290994
C    1.290994
dtype: float64
A    10
B    26
C    42
dtype: int64
A    1
B    5
C    9
dtype: int64
A     4
B     8
C    12
dtype: int64
A    4
B    4
C    4
dtype: int64
A       24
B     1680
C    11880
dtype: int64A  B   C
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12

6.2重置索引

重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行、列标签与 DataFrame 中的数据逐一匹配。通过重置索引操作,您可以完成对现有数据的重新排序。如果重置的索引标签在原 DataFrame 中不存在,那么该标签对应的元素值将全部填充为 NaN。

reindex

reindex() 方法用于重新索引 DataFrame 或 Series 对象。重新索引意味着根据新的索引标签重新排列数据,并填充缺失值。如果重置的索引标签在原 DataFrame 中不存在,那么该标签对应的元素值将全部填充为 NaN。

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

参数

  1. labels
    • 类型:数组或列表,默认为 None。
    • 描述:新的索引标签。
  2. index
    • 类型:数组或列表,默认为 None。
    • 描述:新的行索引标签。
  3. columns
    • 类型:数组或列表,默认为 None。
    • 描述:新的列索引标签。
  4. axis
    • 类型:整数或字符串,默认为 None。
    • 描述:指定重新索引的轴。0 或 ‘index’ 表示行,1 或 ‘columns’ 表示列。
  5. method
    • 类型:字符串,默认为 None。
    • 描述:用于填充缺失值的方法。可选值包括 ‘ffill’(前向填充)、‘bfill’(后向填充)等。
  6. copy:
    • 类型:布尔值,默认为 True。
    • 描述:是否返回新的 DataFrame 或 Series。
  7. level:
    • 类型:整数或级别名称,默认为 None。
    • 描述:用于多级索引(MultiIndex),指定要重新索引的级别。
  8. fill_value
    • 类型:标量,默认为 np.nan。
    • 描述:用于填充缺失值的值。
  9. limit:
    • 类型:整数,默认为 None。
    • 描述:指定连续填充的最大数量。
  10. tolerance:
    • 类型:标量或字典,默认为 None。
    • 描述:指定重新索引时的容差。
  • 重置索引行
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data,index=['a','b','c','d'])
#重置索引行
new_index = ['a','b','c','d','e']
print(df.reindex(new_index))#重置索引
  A    B     C
a  1.0  5.0   9.0
b  2.0  6.0  10.0
c  3.0  7.0  11.0
d  4.0  8.0  12.0
e  NaN  NaN   NaN
  • 重置索引列
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data,index=['a','b','c','d'])
#重置索引列
new_columns = ['A','B','C','D']
print(df.reindex(columns=new_columns))
  A  B   C   D
a  1  5   9 NaN
b  2  6  10 NaN
c  3  7  11 NaN
d  4  8  12 NaN
  • 重置索引行,并使用向前填充
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data,index=['a','b','c','d'])
#重置索引行,并使用向前填充
new_index = ['a','b','c','d','e']
print(df.reindex(new_index,method='ffill'))
 A  B   C
a  1  5   9
b  2  6  10
c  3  7  11
d  4  8  12
e  4  8  12
  • 重置索引行,并使用指定值填充
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data,index=['a','b','c','d'])
#重置索引行,并使用指定值填充
new_index = ['a','b','c','d','e']
print(df.reindex(new_index,method='ffill',fill_value=0))
 A  B   C
a  1  5   9
b  2  6  10
c  3  7  11
d  4  8  12
e  4  8  12

6.3 遍历

6.3.1DataFrame 遍历


# DataFrame 的遍历
data = pd.DataFrame({'A': pd.Series([1, 2, 3],index=['a','b','c']),'B': pd.Series([5, 6, 7, 8],index=['a','b','c','d']),
})
df = pd.DataFrame(data)
print(df)
for i in df:print(i)
     A  B
a  1.0  5
b  2.0  6
c  3.0  7
d  NaN  8
A
B

6.3.2 itertuples()


#使用 itertuples() 遍历行
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
#如果index为False,则打印出的元组过滤掉行索引信息
for i in df.itertuples(index=False):print(i)for j in i:print(j)
Pandas(A=1, B=4, C=7)
1
4
7
Pandas(A=2, B=5, C=8)
2
5
8
Pandas(A=3, B=6, C=9)
3
6

6.3.3 使用属性遍历

#使用属性遍历
data = {'A': [1, 2, 3],'B': [4, 5, 6],'C': [7, 8, 9]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
#使用属性遍历
for inx in df.index:for col in df.columns:print(df.loc[inx,col])
1
4
7
2
5
8
3
6
9

6.4 排序

6.4.1 sort_index

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

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

参数

  • axis:指定要排序的轴。默认为 0,表示按行索引排序。如果设置为 1,将按列索引排序。
  • ascending:布尔值,指定是升序排序(True)还是降序排序(False)。
  • inplace:布尔值,指定是否在原地修改数据。如果为 True,则会修改原始数据;如果为 False,则返回一个新的排序后的对象。

6.4.2 sort_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’。
#sort_values排序
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 30, 25, 35, 30],'Score': [85, 90, 80, 95, 88]
}
df = pd.DataFrame(data)
print(df)print(df.sort_values(by='Age'))
print(df.sort_values(by=['Age','Score']))
print(df.sort_values(by=['Age','Score'],ascending=[True,False]))
   Name  Age  Score
0    Alice   25     85
1      Bob   30     90
2  Charlie   25     80
3    David   35     95
4      Eve   30     88Name  Age  Score
0    Alice   25     85
2  Charlie   25     80
1      Bob   30     90
4      Eve   30     88
3    David   35     95Name  Age  Score
2  Charlie   25     80
0    Alice   25     85
4      Eve   30     88
1      Bob   30     90
3    David   35     95Name  Age  Score
0    Alice   25     85
2  Charlie   25     80
1      Bob   30     90
4      Eve   30     88
3    David   35     95

6.5 去重

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,则返回一个新的删除重复项后的对象。

#去重
data = {'A':[1,2,2,3],'B':[4,5,5,6],'C':[7,8,8,9],
}
df = pd.DataFrame(data)#按照所有列去重
print(df.drop_duplicates())
#按照指定列去重
print(df.drop_duplicates(subset='A'))
print(df.drop_duplicates(keep='last'))
 A  B  C
0  1  4  7
1  2  5  8
3  3  6  9A  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.6 分组

6.6.1 groupby

groupby 方法用于对数据进行分组操作,这是数据分析中非常常见的一个步骤。通过 groupby,你可以将数据集按照某个列(或多个列)的值分组,然后对每个组应用聚合函数,比如求和、平均值、最大值等。

  • 语法
groupby 方法用于对数据进行分组操作,这是数据分析中非常常见的一个步骤。通过 groupby,你可以将数据集按照某个列(或多个列)的值分组,然后对每个组应用聚合函数,比如求和、平均值、最大值等。

参数**:

  • by:用于分组的列名或列名列表。
  • axis:指定沿着哪个轴进行分组。默认为 0,表示按行分组。
  • level:用于分组的 MultiIndex 的级别。
  • as_index:布尔值,指定分组后索引是否保留。如果为 True,则分组列将成为结果的索引;如果为 False,则返回一个列包含分组信息的 DataFrame。
  • sort:布尔值,指定在分组操作中是否对数据进行排序。默认为 True。
  • group_keys:布尔值,指定是否在结果中添加组键。
  • squeeze:布尔值,如果为 True,并且分组结果返回一个元素,则返回该元素而不是单列 DataFrame。
  • observed:布尔值,如果为 True,则只考虑数据中出现的标签。
#分组
data = {'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)
print(df)#按A分组
# 查看分组结果
grouped = df.groupby('A')
print(list(grouped))# 按Af分组,然后计算每个分组的C的平均值
grouped = df.groupby('A')['C']
print(grouped.mean())#按A分组,计算所有列(如果报错使有非数字类型的值)
grouped = df.groupby(['A'])
print(grouped.mean)#通过transform()函数对分组进行操作,保存到DataFrame中
grouped = df.groupby('A')['C'].transform('mean')
df['C_mean'] = grouped
print(df)#可以使用匿名函数来对分组进行操作,比如正态分布的标准化
grouped = df.groupby('A')['C'].transform(lambda x: (x - x.mean()) / x.std())
df['C_norm'] = grouped
print(df)
  A      B  C   D
0  foo    one  1  10
1  bar    one  2  20
2  foo    two  3  30
3  bar  three  4  40
4  foo    two  5  50
5  bar    two  6  60
6  foo    one  7  70
7  foo  three  8  80
[('bar',      A      B  C   D
1  bar    one  2  20
3  bar  three  4  40
5  bar    two  6  60), ('foo',      A      B  C   D
0  foo    one  1  10
2  foo    two  3  30
4  foo    two  5  50
6  foo    one  7  70
7  foo  three  8  80)]
A
bar    4.0
foo    4.8
Name: C, dtype: float64A      B  C   D  C_mean
0  foo    one  1  10     4.8
1  bar    one  2  20     4.0
2  foo    two  3  30     4.8
3  bar  three  4  40     4.0
4  foo    two  5  50     4.8
5  bar    two  6  60     4.0
6  foo    one  7  70     4.8
7  foo  three  8  80     4.8A      B  C   D  C_mean    C_norm
0  foo    one  1  10     4.8 -1.327018
1  bar    one  2  20     4.0 -1.000000
2  foo    two  3  30     4.8 -0.628587
3  bar  three  4  40     4.0  0.000000
4  foo    two  5  50     4.8  0.069843
5  bar    two  6  60     4.0  1.000000
6  foo    one  7  70     4.8  0.768273
7  foo  three  8  80     4.8  1.117488

6.6.2 filter

通过 filter() 函数可以实现数据的筛选,该函数根据定义的条件过滤数据并返回一个新的数据集

# # 按列 'A' 分组,并过滤掉列 'C' 的平均值小于 4 的组
# filter
data = {'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)
filtered_df = df.groupby('A').filter(lambda x: x['C'].mean() > 4)
print(filtered_df)
  A      B  C   D
0  foo    one  1  10
2  foo    two  3  30
4  foo    two  5  50
6  foo    one  7  70
7  foo  three  8  80

6.7 合并

merge 函数用于将两个 DataFrame 对象根据一个或多个键进行合并,类似于 SQL 中的 JOIN 操作。这个方法非常适合用来基于某些共同字段将不同数据源的数据组合在一起,最后拼接成一个新的 DataFrame 数据表。

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:验证合并是否符合特定的模式。

#合并
# 创建两个示例 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']
})# 内连接,只连接key相同的行
df = pd.merge(left, right, on='key', how='inner')
print(df)# 左连接,连接所有左边的行,右边没有的用NaN填充
df = pd.merge(left, right, on='key', how='left')
print(df)# 右连接,连接所有右边的行,左边没有的用NaN填充
df = pd.merge(left, right, on='key', how='right')
print(df)# 外连接,连接所有行,没有的用NaN填充
df = pd.merge(left, right, on='key', how='outer')
print(df)
 key   A   B   C   D
0  K0  A0  B0  C0  D0
1  K1  A1  B1  C1  D1
2  K2  A2  B2  C2  D2key   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  NaNkey    A    B   C   D
0  K0   A0   B0  C0  D0
1  K1   A1   B1  C1  D1
2  K2   A2   B2  C2  D2
3  K4  NaN  NaN  C3  D3key    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
4  K4  NaN  NaN   C3   D3

6.8 随机抽样

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

参数

  • n:要抽取的行数
  • frac:抽取的比例,比如 frac=0.5,代表抽取总体数据的50%
  • replace:布尔值参数,表示是否以有放回抽样的方式进行选择,默认为 False,取出数据后不再放回
  • weights:可选参数,代表每个样本的权重值,参数值是字符串或者数组
  • random_state:可选参数,控制随机状态,默认为 None,表示随机数据不会重复;若为 1 表示会取得重复数据
  • axis:表示在哪个方向上抽取数据(axis=1 表示列/axis=0 表示行)

# 随机抽样
def sample_test():df = pd.DataFrame({"company": ['百度', '阿里', '腾讯'],"salary": [43000, 24000, 40000],"age": [25, 35, 49]})print(df.sample(frac=0.4))#随机抽取40%,4舍五入print(df.sample(n=2,axis=0))#随机抽取2条数据print(df.sample(n=1,axis=1))#随机抽取1列数据print(df.sample(n=2,axis=0,random_state=1))#随机抽取2条数据,并指定随机种子print(df.sample(frac=0.5, replace=True))#随机抽取50%,允许重复sample_test()
  company  salary  age
1      阿里   24000   35company  salary  age
2      腾讯   40000   49
1      阿里   24000   35age
0   25
1   35
2   49company  salary  age
0      百度   43000   25
2      腾讯   40000   49company  salary  age
0      百度   43000   25
0      百度   43000   25

6.9空值处理

6.9.1 检测空值

isnull()用于检测 DataFrame 或 Series 中的空值,返回一个布尔值的 DataFrame 或 Series。

notnull()用于检测 DataFrame 或 Series 中的非空值,返回一个布尔值的 DataFrame 或 Series。

#空值检测
#isnull,检测DataFrame中的空值,返回一个布尔值矩阵,True表示空值,False表示非空值
def isnull_test():df = pd.DataFrame({"company": ['百度', '阿里', '腾讯'],"salary": [43000,np.nan, 40000],"age": [25, 35, 49]})print(df.isnull())print(df.isnull().sum())#统计空值print(df.isnull().sum().sum())#统计空值总数isnull_test()
#notnull,检测DataFrame中的非空值,返回一个布尔值矩阵,True表示非空值,False表示空值
def notnull_test():df = pd.DataFrame({"company": ['百度', '阿里', '腾讯'],"salary": [43000,np.nan, 40000],"age": [25, 35, 49]})print(df.notnull())print(df.notnull().sum())#统计非空值print(df.notnull().sum().sum())#统计非空值总数
   company  salary    age
0    False   False  False
1    False    True  False
2    False   False  False
company    0
salary     1
age        0
dtype: int64
1

6.9.2 填充空值

fillna() 方法用于填充 DataFrame 或 Series 中的空值。

#空值填充
def fillna_test():df = pd.DataFrame({"company": ['百度', '阿里', '腾讯'],"salary": [43000,np.nan, 40000],"age": [25, 35, 49]})print(df.fillna(0))#填充0print(df.fillna(method='ffill'))#填充前一个值fillna_test()
 company   salary  age
0      百度  43000.0   25
1      阿里      0.0   35
2      腾讯  40000.0   49

6.9.3 删除空值

dropna() 方法用于删除 DataFrame 或 Series 中的空值。

#删除空值
def dropna_test():df = pd.DataFrame({"company": ['百度', '阿里', '腾讯'],"salary": [43000,np.nan, 40000],"age": [25, 35, 49]})print(df.dropna())#删除空值print(df.dropna(axis=1))#删除空值所在列dropna_test()
 company   salary  age
0      百度  43000.0   25
2      腾讯  40000.0   49company  age
0      百度   25
1      阿里   35
2      腾讯   49

七,读取CSV文件

CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本);

CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

7.1 to_csv()

to_csv() 方法将 DataFrame 存储为 csv 文件

#存csv文件
#to_csv()
def to_csv_test():df = pd.DataFrame({"company": ['百度', '阿里', '腾讯'],"salary": [43000,np.nan, 40000],"age": [25, 35, 49]})df.to_csv('test.csv',index=False)#index=False表示不保存索引to_csv_test()

在这里插入图片描述

7.2 read_csv()

read_csv() 表示从 CSV 文件中读取数据,并创建 DataFrame 对象。

#读取csv文件
def read_csv_test():df = pd.read_csv('test.csv')print(df)read_csv_test()
  company   salary  age
0      百度  43000.0   25
1      阿里      NaN   35
2      腾讯  40000.0   49

八,绘图

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

Pandas 之所以能够实现了数据可视化,主要利用了 Matplotlib 库的 plot() 方法,它对 plot() 方法做了简单的封装,因此您可以直接调用该接口;

只用 pandas 绘制图片可能可以编译,但是不会显示图片,需要使用 matplotlib 库,调用 show() 方法显示图形。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt#绘图
import matplotlib.pyplot as plt
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()# 饼图
# 创建一个示例 
data = {'A': 10,'B': 20,'C': 30,'D': 40
}
pd = pd.Series(data)
# 绘制饼图
pd.plot(kind='pie', autopct='%1.1f%%')
# 显示图表
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库主从复制学习笔记

目录 一、Binlog(Binary Log) 核心特性 核心用途 Binlog 格式(3种类型) 二、主从复制 核心原理 主库(Master) 从库(Slave) 配置步骤(以 MySQL 为例) …

宁德时代25年春招笔试演绎数字推理SHL测评题库

宁德时代校招测评包含演绎推理数字推理两部分,请单击以下链接进行测评,详细操作指引请参见如下指引,请在测试前了解,大约用时60分钟。正式测评有两个部分:数字推理18分钟演绎推理18分钟,数字推理共10题,演绎…

Ubuntu24.04 编译 Qt 源码

一:Ubuntu 把 Qt 拆成了多个源码包: 1. 基础包 2. 可选包 二:编译 qtbase-opensource-src 1. 配置源(修改 /etc/apt/sources.list.d/ubuntu.sources) 2. 下载代码 apt source qtbase-opensource-src3. 安装依赖 sudo a…

4-10记录(

就算有两个49也要按照先后顺序放,即把比下划线的49大的数字往后移 temp是防止覆盖 带哨兵的作用,把0的位置空出来,49>38,就先把38放到哨兵位然后把49放进原先38的格子里,然后把哨兵位的38后移一位

电脑死机/锁屏后死机无法唤醒

电脑死机/锁屏后死机无法唤醒 导航 文章目录 电脑死机/锁屏后死机无法唤醒导航一、系统日志分析二、电源管理与睡眠模式问题1、禁用快速启动2、调整电源计划(开启高性能模式&关闭硬盘休眠)若是没有禁用睡眠和关闭显示器方法一:方法二&am…

.htaccess文件的组成、用法及作用详解

.htaccess(Hypertext Access)是 Apache 服务器的一个分布式配置文件,可以覆盖主配置文件的设置,无需重启服务器即可生效(需要管理员级别权限修改的httpd.conf文件修改后需要重启Apach服务器)它主要用于目录…

10A 大电流 DCDC 降流芯片 WD5030

10A 大电流 DCDC 降压芯片 WD5030 在电子设备的电源管理领域,高效稳定的 DCDC 芯片至关重要。今天我们来深入探讨一款性能卓越的 10A 大电流 DCDC 降流芯片 ——WD5030。它在众多电子应用场景中展现出了强大的优势,为各类设备的稳定供电提供了可靠保障。…

HCIP【路由过滤技术(详解)】

目录 1 简介 2 路由过滤方法 3 路由过滤工具 3.1 静默接口 3.2 ACL 3.3 地址前缀列表 3.4 filter-policy 3.4.1 filter-policy过滤接收路由(以RIP为例) 3.4.2 filter-policy过滤接收路由(以OSPF为例) 1 简介 路由过滤技术…

Cursor Agent 模式实现复杂工作流的编排与执行

引言 在 Dify Workflows MCP Server (TypeScript)设计与实战 文章中提到过通过 MCP 调用编排好的 Dify 工作流,那在 Cursor 中是否可以 自行实现 对应的工作流编排效果,这样可以充分的利用 Cursor 中的代码上下文,从而保证生成的代码可以更符合项目的需求,进一步降低手工…

ShopXO v2.2.4开源商城手动部署(保姆级)+异常处理

ShopXO v2.2.4开源商城手动部署(保姆级) 1.项目了解 1.1项目简洁 ShopXO国内领先企业级免费开源电商系统! 求实进取、创新专注、自主研发、国内领先企业级电商系统解决方案。遵循MIT开源协议发布,无需授权、可商用、可二次开发、满足99%的电商运营需…

蓝桥杯 分解质因数(唯一分解定理)

分解质因数 题目描述 给定一个区间 [a,b][a,b],请你求出区间 [a,b][a,b] 中所有整数的质因数分解。 输入描述 输入共一行,包含两个整数 a,ba,b。 2≤a≤b≤1032≤a≤b≤103。 输出描述 每行输出一个数的分解,形如 ka1a2a3⋯(a1≤a2≤a…

【C++算法】53.链表_重排链表

文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 143. 重排链表 题目描述: 解法 模拟 找到链表的中间节点 快慢双指针 把后面的部分逆序 双指针,三指针,头插法 合并两个链表 合并两个有…

【Java设计模式】第7章 建造者模式讲解

7-1 建造者模式讲解 1. 定义与类型 定义: 将复杂对象的构建与表示分离,使相同构建过程可创建不同表示。类型: 创建型模式。通俗解释: 分步构建含多组件的对象,流程固定但顺序灵活(如做菜时放盐顺序可变)。2. 适用场景 对象内部结构复杂(多属性或多步骤)。需将对象创建与…

本地laravel项目【dcat-admin】部署到liunx服务器

文章目录 前言一、部署流程1、数据库搬迁2、宝塔创建网站,配置php3、修改nginx配置4、在public目录设置软连接5、修改env配置、刷新缓存 二、其他问题1.后台登陆失败问题2.完美解决接口跨域问题 总结 前言 laravel新手记录 差不多一个月,总算用laravel…

医院导航系统方案:多模态三维导航引擎赋能医院智慧升级(二)

本文面向智慧医院建设方与算法研发工程师,聚焦解决多楼层复杂场景下的精准导航难题,提供从数学建模到工程落地的技术实战方案。 如需获取智慧医院导航导诊系统解决方案请前往文章最下方获取,如有项目合作及技术交流欢迎私信作者。 一、技术聚…

NO.84十六届蓝桥杯备战|动态规划-路径类DP|矩阵的最小路径和|迷雾森林|过河卒|方格取数(C++)

路径类dp是线性dp的⼀种,它是在⼀个nm的矩阵中设置⼀个⾏⾛规则,研究从起点⾛到终点的⽅案数、最⼩路径和或者最⼤路径和等等的问题 矩阵的最小路径和_牛客题霸_牛客网 状态表⽰: dp[i][j]表⽰:到达[i, j]位置处,最⼩…

openlayers入门01 -- 环境配置和初始化地图

openlayers入门 openlayers开发环境配置 1.下载VSCode 官网地址:https://code.visualstudio.com/ 点击Download for Windows 2.安装汉化插件和openlayers插件 搜索chinese,下载Chinese (Simplified) (简体中文) Language Pack 更改语言并重启 搜…

最新版DataGrip超详细图文安装教程,带补丁包(2025最新版保姆级教程)

目录 前言 一、DataGrip最新版下载 二、DataGrip安装 三、DataGrip补丁 四、运行DataGrip 前言 DataGrip 是由 JetBrains 公司开发的一款专业的跨平台数据库管理工具,主要用于连接、管理和操作多种主流关系型数据库及部分 NoSQL 数据库。它支持 MySQL、Postgre…

25年时代电服社招入职Verify测评SHL题库语言理解数字推理考什么?

宁德时代语言理解 语言理解部分主要考察应聘者的语言表达和逻辑思维能力,题型包括阅读理解、逻辑填空和语句排序。阅读理解要求应聘者快速捕捉文章的主旨和细节信息,能够迅速把握文章的核心观点;逻辑填空需要在给定的语句中填入最合适的词汇…

QML 弹窗控件:Popup的基本用法与样式

目录 引言相关阅读Popup基本属性工程结构示例实现Main.qml - 主界面SimplePopup.qml - 简单弹窗ModalPopup.qml - 模态弹窗CustomPopup.qml - 自定义样式弹窗AnimatedPopup.qml - 带动画的弹窗 总结工程下载 引言 在现代图形用户界面(GUI)开发中,弹窗(Popup)是一种…