如何在pandas python中找到对象数据类型的平均值?

n53p2ov0  于 2024-01-04  发布在  Python
关注(0)|答案(1)|浏览(96)

| 内存速度|器械重量|屏幕尺寸|GPU内存类型|GPU内存大小|GPU类型|面板类型|处理器世代|处理器|操作系统|读卡器|背光键盘|最大处理器速度|最大屏幕分辨率|指纹读取器|RAM(系统内存)|SSD容量|产品型号|价格|
| --|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| 2666兆赫|2 - 4公斤|15.6英寸|船上的|共享|集成图形|LED| 10代|小行星1005 G1| Windows 11操作系统|没有一| 0 |3.4 GHz| 1920 x 1080|没有一|4 GB| 256 GB|笔记本|非常低|
我有一个数据集,如upside. dataset,格式为xlsx文件。我现在正在进行数据预处理。mean,median,mod我必须找到。“进行数据集的描述性数据分析涉及检查记录计数,属性编号,属性类型,集中趋势的度量,从中心的离散度的度量,并生成五个数字的摘要”的某些解释:)
现在我想问一下如何根据我的数据集找到对象数据类型的平均值?背光键盘列的平均值现在只有我能找到。

import pandas as panda

 dataset = panda.read_excel('data.xlsx')
 print(dataset.info())

字符串
范围索引:994个项目,0到993个数据栏(总共19个栏):
| 列名|非空计数|Dtype|
| --|--|--|
| 内存速度| 888 |对象|
| 器械重量| 985 |对象|
| 屏幕尺寸| 994 |对象|
| GPU内存类型| 884 |对象|
| GPU内存大小| 946 |对象|
| GPU类型| 955 |对象|
| 面板类型| 994 |对象|
| 处理器世代| 946 |对象|
| 处理器| 979 |对象|
| 操作系统| 994 |对象|
| 读卡器| 864 |对象|
| 背光| 994 |int64|
| 最大处理器速度| 950 |对象|
| 最大屏幕分辨率| 988 |对象|
| 指纹读取器| 886 |对象|
| RAM(系统内存)| 987 |对象|
| SSD容量| 991 |对象|
| 产品型号| 994 |对象|
| 价格| 994 |对象|
dataset.head()结果:
| 内存速度|器械重量|屏幕尺寸|图形卡内存类型|显卡内存|图形卡类型|屏幕面板类型|处理器世代|处理器|操作系统|读卡器|背光键盘|最大处理器速度|最大屏幕分辨率|指纹读取器|RAM(系统内存)|SSD容量|产品型号|价格|
| --|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| 1066 MHz|楠|10英寸|楠|1 GB|楠|IPS|第1代|1000M| Android|楠| 0 |1.05千兆赫|楠|楠|楠|1 TB|笔记本|高|
| 1066 MHz|楠|10英寸|楠|1 GB|楠|IPS|第1代|1000M| Android|楠| 0 |1.05千兆赫|楠|楠|楠|1 TB|笔记本|高|
| 1066 MHz|楠|10英寸|楠|1 GB|楠|IPS|第1代|1000M| Android|楠| 0 |1.05千兆赫|楠|楠|楠|1 TB|笔记本|介质|
| 3200 MHz| 1 - 2公斤|15.6英寸|GDDR 4基因|2 GB|外部GPU| LED| 10代|小行星1035| Windows 10 Home|是的| 0 |3.6 GHz| 1920 x 1080|没有|8 GB| 512 GB|笔记本|低|
| 3200 MHz| 1 - 2公斤|15.6英寸|GDDR5| 2 GB|外部GPU| LED| 10代|小行星1035| Windows 10 Home|没有| 0 |3.6 GHz| 1920 x 1080|没有|12 GB| 1 TB|笔记本|低|

ifmq2ha2

ifmq2ha21#

有一个pandas describe函数:

dataset.describe(include = "all")

字符串
在一个比describe更好的答案方面,有一个问题是将值转换(如果可能的话)为数值类型。所以我不得不进行繁琐的检查:

import pandas as pd
import numpy as np

df = pd.read_excel("Dataset.xlsx") # import data from op's file
df_new = pd.DataFrame(columns=df.columns) # generate an empty copy with headers

for col in df.columns: # go through columns
    if df[col].dtypes == "object": # check if object, if yes go in, if no assign to df_new
        values = list() # init empty list
        for val in df[col].values: # for every value in the column
            if pd.isna(val): # if it is nan, append it to values
                # print("Nan detected in "+str(val))
                values.append(np.nan) # append
            elif " " in val: # if there are spaces, this hints to the existence of number + unit
                # print("space detected in "+val)
                val_splitted = val.split(" ") # split with space
                if "," in val_splitted[0]: # if there is a comma, since the dec points are sometimes with , and sometimes with .
                    val_splitted[0] = val_splitted[0].replace(",", ".") # replace , with .
                if len(val_splitted) == 2: # if there are only two values in the splitted form
                    # print("one space detected in "+val)
                    try: # try to convert to float
                        if col == "SSD Capacity": # only here, since the unit switches between GB and TB
                            if val_splitted[1] == "GB": # 
                                values.append(float(val_splitted[0])/1000) # append divided by 1000
                            else: # else
                                values.append(float(val_splitted[0])) # assign as is
                        else: # if it is not the column SSD Capacity
                            values.append(float(val_splitted[0])) # append the val as is
                    except ValueError: # oops! value cannot be converted, then it is not numeric
                        values.append(val) # assign as is
                else:
                    #print("too many spaces inm keeping "+val+" as it is") 
                    values.append(val) # if too many spaces, such as "1920 x 1080" append as is
            else:
                # print("keeping "+val+" as it is")
                values.append(val) # if no spaces and not nan, assign as is
        df_new[col] = values # assign the values to the column in df_new
    else:
        df_new[col] = df[col] # if the value is not an object type, assign the whole column to df_new
        
print(df_new.describe(include = "all")) # print description


结果是这样的:
| | 屏幕尺寸|背光|最大处理器速度|RAM(系统内存)|SSD容量| SSD Capacity |
| --|--|--|--|--|--|--|
|计数| 八十八万八千|九十九万四千|九十九万四千|九十五万|九十八万七千|九十九万一千|
|mean| 三三三九八七四|15.336| 0.243|四点二九三|十七点四三一|0.638|
|std| 626.284|零点九二三|0.429|零点六一六|十二点二三五|零点四二三|
|min| 1066.000|一万|000|一千零五十|四千|000|
|25%| 三千二百万|一万五千六百|000|四千二百|八千|0.500|
|50%| 三千二百万|一万五千六百|000|四千四百|一万六千|零点五一二|
|75%| 三千二百万|一万五千六百|000|四千七百|一万六千|一千|
|最大| 六千四百万|一万八千四百|一千|五千六百|十二万八千|四千|

相关问题