数据可视化(四):Pandas技术的高级操作案例,豆瓣电影数据也能轻松分析!

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊!

喜欢我的博客的话,记得点个红心❤️和小关小注哦!您的支持是我创作的动力!"

数据可视化(四):Pandas技术的高级操作案例,豆瓣电影数据也能轻松分析!

目录

    • 数据可视化(四):Pandas技术的高级操作案例,豆瓣电影数据也能轻松分析!
    • 1. 创建一个Series
    • 2. 采用以下值和索引创建Series
    • 3. 显示DataFrame列
    • 4. 采用loc对DataFrame行进行切片
    • 5. 采用iloc对DataFrame行进行切片
    • 6. 采用loc对DataFrame进行行和列切片
    • 7. 采用iloc对DataFrame进行行和列切片
    • 8. iloc 和 loc 的区别
    • 9. 使用时间索引创建空 DataFrame,包含'A'、'B'、'C'三列,用0值填充
    • 10. 改变 DataFrame 行、列的排序
    • 11. 更改 DataFrame 指定列的数据类型
    • 12. 两个 DataFrame 相加
    • 13. 删除数据
    • 14. 获取行、列的平均值
    • 15. 计算行、列的和
    • 16. 对索引值进行排序
    • 17. 对列名进行排序
    • 18. 对数据进行排序
    • 19. map()、applymap()使用
    • 20. 采用“豆瓣电影数据”进行分析
    • 附录:

import numpy as np
import pandas as pd

1. 创建一个Series

名字为Countries

内容由以下列表组成

[“India”, “Canada”, “Germany”]

# 编程
import pandas as pd 
import numpy as np
  
# 创建一个列表  
country_list = ["India", "Canada", "Germany"]  
  
# 使用列表创建一个Series对象,并设置名字为"Countries"  
countries_series = pd.Series(country_list, name="Countries")  
  
# 打印Series  
print(countries_series)

2. 采用以下值和索引创建Series

values = [“India”, “Canada”, “Australia”, “Japan”, “Germany”, “France”]

inds = [“IND”, “CAN”, “AUS”, “JAP”, “GER”, “FRA”]

# 编程
import pandas as pd  
  
# 定义值和索引  
values = ["India", "Canada", "Australia", "Japan", "Germany", "France"]  
inds = ["IND", "CAN", "AUS", "JAP", "GER", "FRA"]  
  
# 使用指定的值和索引创建Series对象  
countries_series = pd.Series(values, index=inds)  
  
# 打印Series  
print(countries_series)

3. 显示DataFrame列

数据如下创建:

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])
# 编程

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

# 1、显示Score列
df[["Score"]]

# 2、显示Color、Score两列
df[["Color","Score"]]

# 3、显示为整数值的列
int_columns = df.select_dtypes(include=['int64']).columns
# 打印整数类型的列
int_columns

# 4、显示非字符串的列
non_string_columns = df.select_dtypes(exclude=[object]).columns  
print("非字符串的列:")  
print(non_string_columns)

4. 采用loc对DataFrame行进行切片

数据如下创建:

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

采用loc切片

# 编程

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

# 1、显示Penelope行
df.loc[["Penelope"],:]

# 2、显示Cornelia, Jane, Dean三行
df.loc[["Cornelia","Jane","Dean"],:]

# 3、显示Aaron到Dean行(包括Dean行)
df.loc["Aaron":"Dean",:]

5. 采用iloc对DataFrame行进行切片

数据如下创建:

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

采用iloc切片

# 编程

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

# 1、显示Penelope行
df.iloc[[3],:]

# 2、显示Cornelia, Jane, Dean三行
df.iloc[[3,0,4],:]

# 3、显示Aaron到Dean行(包括Dean行)
df.iloc[2:5,:]

6. 采用loc对DataFrame进行行和列切片

采用loc切片

# 编程

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

# 1、选取Penelope行,Color、Height两列
df.loc[["Penelope"],["Color","Height"]]

# 2、选取Penelope到Christina三行,Color到Height三列
df.loc[["Penelope"],["Color","Height"]]

# 3、选取Jane、Penelope、Cornelia三行,Age、State两列
df.loc[["Jane","Penelope","Cornelia"],["Age","State"]]

7. 采用iloc对DataFrame进行行和列切片

采用iloc切片

# 编程

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

# 1、选取Penelope行,Color、Height两列
df.iloc[[3],[1,3]]

# 2、选取Penelope到Christina三行,Color到Height三列
df.iloc[3:6,1:4]

# 3、选取Jane、Penelope、Cornelia三行,Age、State两列
df.iloc[[0,3,6],[0,5]]

注意loc左闭右闭,iloc左闭右开

8. iloc 和 loc 的区别

  • loc可以进行布尔选择
# 编程

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

display(df)

# 1、返回Age小于30的Age、Color、Height三列,采用loc
df.loc[ df["Age"] < 30,["Age","Color","Height"]]

# 2、返回Age小于30的Age、Color、Height三列,采用iloc
selected_data = df[df["Age"]<30].iloc[:, [0, 1, 3]]  
selected_data

# 3、返回Height在120到170之间,Score大于3的所有列,采用loc
df[ (df["Height"]<=170) & (df["Height"] >=120)].loc[ df["Score"]>3, :]

# 4、返回Height在120到170之间,Score大于3的所有列,采用iloc
# 重置索引
df_new = df.reset_index()
df_new

# 创建Height在120到170之间且Score大于3的布尔索引  
height_condition = (df_new['Height'] >= 120) & (df_new['Height'] <= 170)  
score_condition = df_new['Score'] > 3  
combined_condition = height_condition & score_condition  
  
# 使用布尔索引获取满足条件的行的标签(即索引)  
indices = df_new[combined_condition].index  
  
# 使用iloc和这些索引来选择满足条件的所有行和所有列  
selected_data = df_new.iloc[indices]  
  
# 打印选取的数据  
selected_data.set_index("index")

9. 使用时间索引创建空 DataFrame,包含’A’、‘B’、'C’三列,用0值填充

提示:pd.date_range()函数;datatime库;pd.fillna()函数

# 编程

import datetime
# 创建一个日期范围,比如从2024年1月1日到2024年1月5日  
date_range = pd.date_range(start='2024-01-01', end='2024-01-05')  
  
# 使用日期范围作为索引,并用0初始化'A', 'B', 'C'列  
df = pd.DataFrame(0, index=date_range, columns=['A', 'B', 'C'])  
  
# 打印结果  
df

10. 改变 DataFrame 行、列的排序

# 编程

data = {'C':[0,1,2], 'A':[6,8,10], 'B':[3,-1,7]}
df = pd.DataFrame(data,index=['c','b','a'])
display(df)

# 1、改变列顺序从C A B到A B C
df[["A","B","C"]]

# 编程

data = {'C':[0,1,2], 'A':[6,8,10], 'B':[3,-1,7]}
df = pd.DataFrame(data,index=['c','b','a'])
display(df)

# 2、改变行顺序从c b a到a b c
df.loc[["a","b","c"],:]

11. 更改 DataFrame 指定列的数据类型

# 编程

df = pd.DataFrame(data = {'Age': [30, 20, 22, 40, 32, 28, 39], 
                   'Color': ['Blue', 'Green', 'Red', 'White', 'Gray', 'Black', 'Red'], 
                   'Food': ['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'], 
                   'Height': [165, 70, 120, 80, 180, 172, 150], 
                   'Score': [4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2], 
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index = ['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia'])

display(df)
display(df.dtypes)

# 1、将Height列数据从int64改为float64
df["Height"] = df["Height"].astype(np.float64)
df.dtypes

# 2、将Score列数据从float64改为str
df["Score"] = df["Score"].astype(str)
df.dtypes

12. 两个 DataFrame 相加

# 编程

df1 = pd.DataFrame({'Age': [30, 20, 22, 40], 
                    'Height': [165, 70, 120, 80], 
                    'Score': [4.6, 8.3, 9.0, 3.3], 
                    'State': ['NY', 'TX', 'FL', 'AL']}, 
                   index=['Jane', 'Nick', 'Aaron', 'Penelope'])
 
df2 = pd.DataFrame({'Age': [32, 28, 39], 
                    'Color': ['Gray', 'Black', 'Red'],
                    'Food': ['Cheese', 'Melon', 'Beans'],
                    'Score': [1.8, 9.5, 2.2], 'State': ['AK', 'TX', 'TX']}, 
                   index=['Dean', 'Christina', 'Cornelia'])

# df1和df2合,按列排序
# axis=0, df1和df2合,按列排序
df3 = pd.concat([df1,df2],axis=0)
df3

13. 删除数据

# 编程

df = pd.DataFrame({
    'Country': ['China', 'China', 'India', 'India', 'America','Japan', 'China', 'India'], 
    'Income': [10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000], 
    'Age': [50, 43, 34, 40, 25, 25, 45, 32]
})
display(df)

# 1、删除第3行
df1 = df.drop(2)
df1

# 2、删除Income列
column_to_drop = 'Income'  # 替换为实际的列名  
df2 = df.drop(columns=[column_to_drop],axis=1)
df2

# 3、删除Age列,原DataFrame发生改变,提示inplace参数
df.drop("Age",axis=1,inplace=True)
df

14. 获取行、列的平均值

# 编程

df = pd.DataFrame([[10, 20, 30, 40], [7, 14, 21, 28], [5, 5, 0, 0]],
                  columns=['Apple', 'Orange', 'Banana', 'Pear'],
                  index=['Basket1', 'Basket2', 'Basket3'])
display(df)

# 1、按列统计均值
df.mean()

# 2、按行统计均值
df.mean(axis=1)

# 3、增加一列'Basket mean',该列为行均值
df["Basket mean"] = df.mean(axis=1)
df

# 4、增加一行'Fruit mean',该行为列均值
df.loc["Fruit mean",:] = df.mean()
df

15. 计算行、列的和

# 编程

df = pd.DataFrame([[10, 20, 30, 40], [7, 14, 21, 28], [5, 5, 0, 0]],
                  columns=['Apple', 'Orange', 'Banana', 'Pear'],
                  index=['Basket1', 'Basket2', 'Basket3'])
display(df)

# 1、按列统计总和
df.sum()

# 2、按行统计总和
df.sum(axis=1)

# 3、增加一列'Basket sum',该列为行总和
df["Basket sum"] = df.sum(axis=1)
df

# 4、增加一行'Fruit sum',该行为列总和
df.loc["Fruit sum",:] = df.sum()
df

16. 对索引值进行排序

# 编程

df = pd.DataFrame({'DateOfBirth': ['1986-11-11', '1999-05-12', '1976-01-01','1986-06-01', '1983-06-04', '1990-03-07', '1999-07-09'],
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index=['Jane', 'Pane', 'Aaron', 'Penelope', 'Frane', 'Christina', 'Cornelia'])

# 1、对索引进行排序
df.sort_index(inplace=True)  
df

# 2、按降序对索引值进行排序
df.sort_index(ascending=False,inplace=True)
df

17. 对列名进行排序

# 编程

df = pd.DataFrame({'DateOfBirth': ['1986-11-11', '1999-05-12', '1976-01-01','1986-06-01', '1983-06-04', '1990-03-07', '1999-07-09'],
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index=['Jane', 'Pane', 'Aaron', 'Penelope', 'Frane', 'Christina', 'Cornelia'])

# 按降序对列名进行排序
# 获取列名,并按降序排序  
sorted_columns = df.columns.tolist()  
sorted_columns.sort(reverse=True)  
  
# 使用排序后的列名重新索引DataFrame  
df_sorted_columns = df.reindex(columns=sorted_columns)  
  
# 显示按降序排序列名的DataFrame  
df_sorted_columns

18. 对数据进行排序

# 编程

df = pd.DataFrame({'DateOfBirth': ['1986-11-11', '1999-05-12', '1976-01-01','1986-06-01', '1983-06-04', '1990-03-07', '1999-07-09'],
                   'State': ['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']}, 
                  index=['Jane', 'Pane', 'Aaron', 'Penelope', 'Frane', 'Christina', 'Cornelia'])

# 1、对state列的值进行排序
df.sort_values(by="State")

# 2、对state、DateOfBirth两列的值进行降序排序,并改变原DataFrame
df.sort_values(by=["State","DateOfBirth"],ascending=[False,False])

19. map()、applymap()使用

# 编程

data = {'fruit':['apple','banana','grape'],'price':[5,6,7]}
df = pd.DataFrame(data)
display(df)

# 1、编写函数将price中整数改为字串,例如5改为5元
def convert_price_to_string(df):  
    df['price'] = df['price'].astype(str) + '元'  
    return df  
  
# 使用函数转换price列  
df_with_string_prices = convert_price_to_string(df)  
df1 = display(df_with_string_prices) 
df1

# 2、将fruit列中首字母大写
def capitalize_first_letter(df):  
    df['fruit'] = df['fruit'].str.capitalize()  
    return df  
  
# 使用函数将fruit列的首字母大写  
df_with_capitalized_fruit = capitalize_first_letter(df)  
df2 = display(df_with_capitalized_fruit)
df2

# 编程

data = {'fruit':['apple','banana','grape'],'price':[5,6,7]}
df = pd.DataFrame(data)
display(df)

# 3.将price中数据从整数转为浮点数,采用map()
# 使用向量化操作进行类型转换(对于更复杂的转换可能有用)  
df['price'] = [float(p) for p in df['price']]  
  
df.dtypes

# 编程

df = pd.DataFrame(np.random.rand(3,3), index=['a','b','c'], columns=['A','B','C'])
display(df)

# 4. 将所有数据改为小数点后三位,采用applymap()
df['price'] = df['price'].apply(lambda x: '{:.3f}'.format(x))  
  
# 显示格式化后的DataFrame  
display(df)

20. 采用“豆瓣电影数据”进行分析

# 编程

df = pd.read_excel('assets/豆瓣电影数据.xlsx') # read_excel方法进行读取excel文件 

# 1、显示前5行
df.head()

# 2、显示后5行
df.tail()

# 3、随机选5行
df.sample(5)

# 编程

# 4、选取产地为泰国,'名字','类型'两列 loc()方法
df.loc[df["产地"]=="泰国",["名字","类型"]]

# 5、选取评分大于9.5,'名字','类型','产地'三列 loc方法
df.loc[df["评分"]>9.5,["名字","类型","产地"]]

# 6、选取评分大于9且投票人数大于1000的数据 query方法
filtered_df = df.query("(`评分`>9)  & (`投票人数`>1000)")
filtered_df

# 7、查看整个数据集的统计信息
df.describe()

# 8、查看整个数据基本信息
df.info()

附录:

数据源:豆瓣电影数据.xlsx

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

typecho博客的相对地址实现

typecho其中的博客地址,必须写上绝对地址,否则在迁移网址的时候会出现问题,例如页面记载异常 修改其中的 typecho\var\Widget\Options\General.php 中的165行左右, /** 站点地址 */if (!defined(__TYPECHO_SITE_URL__)) {$siteUrl new Form\Element\Text(siteUrl,null,$this-…

Tomcat和Spring Boot配置https

生成测试证书 生成证书前&#xff0c;先验证本地是否正确配置jdk环境变量&#xff0c;如果jdk环境变量配置正确&#xff0c;在命令行程序输入生成证书的命令。 keytool -genkey -alias tomcat -keyalg RSA -keystore "F:\job\apache-tomcat-8.5.29\key\freeHttps.keysto…

MySQL模糊查询

一、MySQL通配符模糊查询(%&#xff0c;_) 1.1.通配符的分类 1.“%”百分号通配符&#xff1a;表示任何字符出现任意次数&#xff08;可以是0次&#xff09; 2.“_”下划线通配符&#xff1a;表示只能匹配单个字符&#xff0c;不能多也不能少&#xff0c;就是一个字符。当然…

Yoshua Bengio独家专访:我不想把大模型未来押注在Scaling Law上,AGI路上要“注意安全”...

导读 漫长的30年间&#xff0c;数度从主流方向的超然出走&#xff0c;是Bengio的制胜秘诀。这种不盲从主流的风格体现在他研究生涯的方方面面。 90年代末期&#xff0c;神经网络被打入冷宫&#xff0c;Bengio的论文多次遭拒&#xff0c;连学生们也开始担心&#xff0c;和他一起…

EPSON晶振应用到汽车电子产品上的型号有哪些?

EPSON品牌应用在汽车电子产品上的晶振.&#xff0c;当然也少不了晶振可能最熟悉的就是32.768K系列和26MHZGPS晶振用的多。 在汽车里每一个部件都应有的不一样,甚至多次使用到同一尺寸,不同频率的晶振.爱普生品牌晶振型号就有几百种,很容易混淆,要想记住汽车里所应用到的不是件…

⑥【Shiro】使多个自定义Realm规则生效。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ ⑥【Shiro】Shiro中&#xff0c;如何使多个自定…

DevOps(七)Jenkins发布第一个流水线任务

Jenkins的流水线&#xff08;Pipeline&#xff09;是一种强大的工具&#xff0c;用于定义和管理持续集成和持续交付&#xff08;CI/CD&#xff09;过程。它允许你以代码的形式&#xff08;即"Pipeline as Code"&#xff09;定义整个构建、测试和部署流程&#xff0c;…

UE4 拍摄、保存并浏览相册

效果&#xff1a; 1.新建CameraActor类 2.修改截图保存路径 3.编写BP_Camera蓝图 注意路径 Save Image函数要在执行拍照和BeginPlay事件执行一次 按钮执行拍摄事件 3.编写UMG蓝图 技巧&#xff1a;让Index加1、减1循环赋值 4.把BP_Camera挂在玩家上

《QT实用小工具·三十》基于QT开发的访客管理平台demo

1、概述 源码放在文章末尾 该项目为访客管理平台demo&#xff0c;包含主界面、系统设置、警情查询、调试帮助、用户退出功能。 项目部分代码如下&#xff1a; #ifndef QTHELPER_H #define QTHELPER_H#include "head.h"class QtHelper { public://获取所有屏幕区域…

从Linux角度具体理解程序翻译过程-----预处理、编译、汇编、链接

前言&#xff1a; 在C语言中&#xff0c;我们知道程序从我们所写的代码到可执行执行的过程中经历了以下过程 1.预处理 2.编译 3.汇编 4.链接 可以通过下图来理解 翻译过程 1.预处理 该过程主要进行以下操作&#xff1a; (1)头文件的包含 (2)define定义符号的替换&#xff…

怎样实现opc采集数据后传给web后端

现在很多老工厂要进行数字化改造&#xff0c;现场生产的各种数据需要传到web后端&#xff0c;很多工厂现场原有的自动监控系统已经采集了现场的各种数据&#xff0c;只是没有形成联网。如果前端自动化系统全部废除&#xff0c;重新做数字化控制系统&#xff0c;成本投入太大&am…

docker服务无法启动

背景&#xff1a;断电重启经常会导致磁盘io错误&#xff0c;甚至出现磁盘坏块 这时可以使用xfs_repair来修复磁盘&#xff0c;但是修复过程可能会导致部分数据丢失 xfs_repair -f -L /dev/sdc问题一&#xff1a; Apr 15 19:27:15 Centos7.6 systemd[1]: Unit docker.service e…

Java入门(JDK安装)

安装 JDK 下载 Java Downloads | Oracle 安装 下一步直接安装安装过程中&#xff0c;需要确定自己的安装位置 参考&#xff1a;D:\Java\jdk1.8.0_281_x64 演示位置 校验 终端输入 java -version 配置 1&#xff09;删除默认 javapath 默认情况下&#xff0c;可以在cm…

【C++题解】1607. 两位数运算

问题&#xff1a;1607. 两位数运算 类型&#xff1a;基本运算、拆位求解 题目描述&#xff1a; 小丽在编程课上学会了拆位运算&#xff0c;她已经可以拆出一个两位整数的十位和个位了&#xff0c;她想知道这个整数的十位 / 个位的结果是多少&#xff0c;请编程帮她实现&#…

VulnHub靶机 DC-5 打靶 渗透测试详情过程

VulnHub靶机 DC-5 打靶 详细渗透测试过程 目录 VulnHub靶机 DC-5 打靶 详细渗透测试过程一、将靶机导入到虚拟机当中二、渗透流程主机发现端口扫描目录爆破文件包含getshell反弹shell提权 一、将靶机导入到虚拟机当中 靶机地址&#xff1a; https://download.vulnhub.com/dc/…

【论文阅读】YOLO-World | 开集目标检测

Date&#xff1a;2024.02.22&#xff0c;Tencent AI Lab&#xff0c;华中科技大学Paper&#xff1a;https://arxiv.org/pdf/2401.17270.pdfGithub&#xff1a;https://github.com/AILab-CVC/YOLO-World 论文解决的问题&#xff1a; 通过视觉语言建模和大规模数据集上的预训练来…

HTTP/HTTPS详解

HTTP/HTTPS详解 1. HTTP1.1 HTTP基础知识1.2 HTTP建立和断开连接 2. HTTPS 1. HTTP 1.1 HTTP基础知识 HTTP是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用 于从WWW服务器传输超文本到本…

学习一下选择排序,快速排序

1.选择排序 我们可以根据这动图看到&#xff0c;就是在这个数组里面我们选出最小的放进第一个位置&#xff0c;然后再选除了第一个位置最小的&#xff0c;剩下的数里面最小的放到第二个位置&#xff0c;是不是非常简单呢。 void SelectSort2(int* arr, int n) {int begin 0;…

Stable Diffusion 3 API 发布!超越Midjourney v6和DALL-E 3

Stable Diffusion 3 于 2 月首次宣布作为预览版发布。而今天&#xff0c;StabilityAI 正式推出了 Stable Diffusion 3 和 Stable Diffusion 3 Turbo API 的API接口服务。 Stability AI 称仍在持续改进该模型&#xff0c;并没有说明发布日期。模型还没发布&#xff0c;但API先来…

安装importlib_resources库的方法最终解答!_Python库

安装Python库importlib_resources 我的环境&#xff1a;Window10&#xff0c;Python3.7&#xff0c;Anaconda3&#xff0c;Pycharm2023.1.3 importlib_resources importlib_resources是一个用于访问Python包中非代码资源&#xff08;如文本、图片等&#xff09;的库&#xff…
最新文章