pandas统计分析(下)——数据计算

数据计算

pandas中具有大量的数据计算函数,比如求和、求平均值、求最大值、最小值、中位数、众数、方差、标准差等。

求和(sum)函数

DataFrame.sum(axis = None,skipna = None,level = None,numeric_only = None,min_count = 0,**kwargs)

参数说明:

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)
  • skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
  • level:表示索引层级,默认为None
  • numeric_only:仅数字,布尔型,默认值为None
  • min_count:表示执行操作所需的数目,整型,默认为0
  • **kwargs:要传递给函数的附加关键字参数。
  • 返回值:返回Series对象或DataFrame对象。行或列求和数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[110,105,99],[105,88,115],[109,120,130]]
index = [1,2,3]
columns =['语文','数学','英语']
df = pd.DataFrame(data = data,index = index,columns=columns)

df['总成绩']=  df.sum(axis = 1)
print(df)

语文 数学 英语 总成绩
1 110 105 99 314
2 105 88 115 308
3 109 120 130 359

求均值(mean函数)

mean(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)

参数说明:

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)
  • skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
  • level:表示索引层级,默认为None
  • numeric_only:仅数字,布尔型,默认值为None
  • min_count:表示执行操作所需的数目,整型,默认为0
  • **kwargs:要传递给函数的附加关键字参数。
  • 返回值:返回Series对象或DataFrame对象。行或列平均值数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
index = [1,2,3,4]
columns =['语文','数学','英语']
df = pd.DataFrame(data = data,index = index,columns=columns)
new = df.mean()
#增加一行数据(语文、数学和英语的平均值,忽略索引)
df = df.append(new,ignore_index=True)
print(df)
    语文   数学        英语
0  110.0  105.0   99.000000
1  105.0   88.0  115.000000
2  109.0  120.0  130.000000
3  112.0  115.0         NaN
4  109.0  107.0  114.666667

最大值(max函数)

max(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)

参数说明:

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)
  • skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
  • level:表示索引层级,默认为None
  • numeric_only:仅数字,布尔型,默认值为None
  • min_count:表示执行操作所需的数目,整型,默认为0
  • **kwargs:要传递给函数的附加关键字参数。
  • 返回值:返回Series对象或DataFrame对象。行或列最大值数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
index = [1,2,3,4]
columns =['语文','数学','英语']
df = pd.DataFrame(data = data,index = index,columns=columns)
new = df.max()
#增加一行数据(语文、数学和英语的最大值,忽略索引)
df = df.append(new,ignore_index=True)
print(df)
    语文   数学   英语
0  110.0  105.0   99.0
1  105.0   88.0  115.0
2  109.0  120.0  130.0
3  112.0  115.0    NaN
4  112.0  120.0  130.0

最小值(min函数)

min(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)

参数说明:

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)

  • skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None

  • level:表示索引层级,默认为None

  • numeric_only:仅数字,布尔型,默认值为None

  • min_count:表示执行操作所需的数目,整型,默认为0

  • **kwargs:要传递给函数的附加关键字参数。

  • 返回值:返回Series对象或DataFrame对象。行或列最小值数据

    import pandas as pd
    pd.set_option('display.unicode.east_asian_width',True)
    data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
    index = [1,2,3,4]
    columns =['语文','数学','英语']
    df = pd.DataFrame(data = data,index = index,columns=columns)
    new = df.min()
    #增加一行数据(语文、数学和英语的最小值,忽略索引)
    df = df.append(new,ignore_index=True)
    print(df)
    
        语文   数学   英语
    0  110.0  105.0   99.0
    1  105.0   88.0  115.0
    2  109.0  120.0  130.0
    3  112.0  115.0    NaN
    4  105.0   88.0   99.0
    

中位数(median函数)

中位数又叫作中值,按顺序排列的一组数据中位于中间位置的数,其不受异常值的影响。

median(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)

参数说明:

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)
  • skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
  • level:表示索引层级,默认为None
  • numeric_only:仅数字,布尔型,默认值为None
  • min_count:表示执行操作所需的数目,整型,默认为0
  • **kwargs:要传递给函数的附加关键字参数。
  • 返回值:返回Series对象或DataFrame对象。行或列中位数数据
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)
data = [[110,105,99],[105,88,115],[109,120,130],[112,115]]
index = [1,2,3,4]
columns =['语文','数学','英语']
df = pd.DataFrame(data = data,index = index,columns=columns)
new = df.median()
#增加一行数据(语文、数学和英语的中位数,忽略索引)
df = df.append(new,ignore_index=True)
print(df)
    语文   数学   英语
0  110.0  105.0   99.0
1  105.0   88.0  115.0
2  109.0  120.0  130.0
3  112.0  115.0    NaN
4  109.5  110.0  115.0

求众数(mode函数)

众数就是一组数据中出现最多的数,代表了数据的一般水平。

mode(axis=0, numeric_only=False, dropna=True)

参数说明:

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)
  • numeric_only:仅数字,布尔型,默认值为None
  • drop_na:是否删除缺失值,布尔型,默认为True
  • 返回Series对象或DataFrame对象。
import pandas as pd
data = [[110,120,110],[130,130,130],[130,120,130]]
columns = ['语文','数学','英语']
df = pd.DataFrame(data = data ,columns=columns)
print(df.mode())#三科成绩的众数
print(df.mode(axis = 1))#每一行的众数
print(df['数学'].mode())#'数学'成绩的众数

    语文   数学   英语
0  130  120  130
     0
0  110
1  130
2  130
0    120
dtype: int64

方差(var函数)

方差是用来反映数据的离散程度的,是各组数据与他们平均数的差的平方,方差越小越稳定。

var(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)

参数说明:

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)
  • skipna:布尔型,表示计算结果是否排除NaN/Null值,默认值为None
  • level:表示索引层级,默认为None
  • ddof:整型,默认值为1.自由度,计算中使用的除数是N-ddof,其中N表示元素的数量。
  • numeric_only:仅数字,布尔型,默认值为None
  • **kwargs:要传递给函数的附加关键字参数。
  • 返回值:返回Series对象或DataFrame对象。
import pandas as pd
data = [[110,113,102,105,108],[118,98,119,85,118]]
index = ['小黑','小白']
columns = ['物理1','物理2','物理3','物理4','物理5']
df = pd.DataFrame(data = data,index = index,columns=columns)
print(df.var(axis = 1))
小黑     18.3
小白    237.3
dtype: float64

标准差(std函数)

标准差是方差的平方根,用来表示数据的离散程度。

std(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)

参数与var一样。

import pandas as pd
data = [[110,120,110],[130,130,130],[130,120,130]]
columns = ['语文','数学','英语']
df = pd.DataFrame(data = data ,columns=columns)
print(df.std())
语文    11.547005
数学     5.773503
英语    11.547005
dtype: float64

分位数(quantile函数)

分位数是以概率依据将数据分割为几个等分,常用的有中位数(即二分位数)、四分位数、百分位数等。

quantile(q=0.5, axis=0, numeric_only=True, interpolation='linear')

参数说明:

  • q:浮点型或数组,默认为0.5(50%分位数),其值为0~1

  • axis:axis = 1表示行,axis = 0表示列,默认为None(无)

  • numeric_only:仅数字,布尔型,默认值为True

  • interpolation:内插值,可选参数,用于指定要使用的插值方法,当期望的分位数为数据点i~j时。

    • 线性:i+(j-i)*分数,其中分数是指数被i和j包围的小数部分。
    • 较低:i
    • 较高:j
    • 最近:i或j二者以最近者为准
    • 中点:(i+j)/2
  • 返回值:返回Series对象或DataFrame对象。

import pandas as pd
#创建DataFrame数据(数学成绩)
data = [120,89,98,78,65,102,112,56,79,45]
columns  = ['数学']
df = pd.DataFrame(data = data,columns=columns)
#计算35%的分位数
x = df['数学'].quantile(0.35)
#输出淘汰
print(df[df['数学']<=x])
import pandas as pd
#创建DataFrame数据(数学成绩)
data = [120,89,98,78,65,102,112,56,79,45]
columns  = ['数学']
df = pd.DataFrame(data = data,columns=columns)
#计算35%的分位数
x = df['数学'].quantile(0.35)
#输出淘汰
print(df[df['数学']<=x])
   数学
3  78
4  65
7  56
9  45
import pandas as pd
df = pd.DataFrame({'A':[1,2],
                  'B':[pd.Timestamp('2019'),
                      pd.Timestamp('2020')],
                  'C':[pd.Timedelta('1 days'),
                      pd.Timedelta('2 days')]})
#计算日期、时间和时间增量数据的分位数
print(df.quantile(0.5,numeric_only=False))
A                    1.5
B    2019-07-02 12:00:00
C        1 days 12:00:00
Name: 0.5, dtype: object
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于python数据分析项目——链家上海二手房数据分析(一),我可以提供一些帮助。首先,你可以使用Python中的Pandas库来收集和处理链家上海二手房的数据Pandas可以帮助你从网站上获取相关信息,并针对指定的数据集执行许多不同的操作,以便更好地分析和理解这些数据。此外,还可以使用Matplotlib库来可视化数据,以便更清楚地了解链家上海二手房的特征。 ### 回答2: 链家上海二手房数据分析是一个使用Python进行数据探索和分析的项目。通过对链家网站上的二手房数据进行爬虫操作,我们可以获取到大量的关于上海二手房的信息。 在这个项目中,我们首先需要搭建一个爬虫,用于从链家网站上获取到二手房的数据。我们可以利用Python中的网络请求库和解析库,如requests和BeautifulSoup,来发送网络请求并解析返回的网页内容,从而获取到我们需要的数据。 获取到数据后,我们可以进行数据清洗和预处理。这一步骤主要是针对数据中存在的缺失值、异常值等问题进行处理,以确保数据的准确性和一致性。我们可以使用Python中的pandas库来进行数据的清洗和预处理操作。 接下来,我们可以对数据进行探索性分析。通过使用Python中的数据可视化库,如matplotlib和seaborn,我们可以对数据的特征进行可视化展示,以便更好地理解数据的分布和关系。我们可以绘制直方图、散点图、箱线图等来探索二手房价格、面积、位置等特征与其他变量之间的关系。 最后,我们可以进行一些统计分析,如计算二手房价格的平均值、中位数等统计指标,以及进行一些基本的回归分析,如线性回归等。这些分析可以帮助我们揭示出二手房市场的一些趋势和规律,为我们做出更好的决策提供依据。 总之,链家上海二手房数据分析项目是一个利用Python进行数据爬取、清洗、探索和分析的项目,通过对这些步骤的操作,我们可以更好地理解上海二手房市场的情况,并从中获取到有价值的信息。 ### 回答3: 链家是中国最大的房地产经纪公司之一,在其网站上能够找到各个城市的二手房信息。本项目选取了链家上海的二手房数据进行分析。 首先,我们需要从链家网站上爬取二手房的相关数据,包括房屋的价格、面积、区域、朝向、装修情况等等。通过分析这些数据,我们能够得到一些有趣的结论。 比如,我们可以通过计算平均价格和面积,找出上海不同区域二手房的价格及面积分布情况。通过这些分布情况,我们可以了解到哪些区域的二手房更贵,哪些区域的二手房面积更大,帮助购房者做出更明智的决策。 此外,我们还可以通过数据分析,得到不同房屋朝向和装修情况对价格的影响。通过比较不同朝向和装修情况下的价格差异,我们可以了解到市场对于这些因素的偏好,从而也为购房者提供一些参考。 另外,我们还可以通过分析不同时间段内的二手房成交量,找出上海二手房市场的活跃时段。这对于购房者来说也是非常有用的,因为他们可以根据市场活跃程度来选择合适的时间进行购买。 最后,我们还可以通过数据分析,找出上海二手房市场的热门区域和热门楼盘。这些信息对于投资者来说尤为重要,因为他们可以根据市场趋势来选择合适的投资区域和楼盘。 通过对链家上海二手房数据的分析,我们可以得到很多有用的信息,帮助购房者和投资者做出更明智的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值