pandas详解:学习大佬文章后的逐点分析

目录

(^-^):导言

一、安装pandas

二、数据表的生成(通常是导入数据表)

        1.导入库

        2.导入文件

三、数据表信息查看

        1.维度的查看

        2、数据表基本信息(维度、列名称、数据格式、所占空间等)

        3、查看每一列数据的格式

        4、某一列格式

        5、查看空值情况

        6、查看某一列空值

        7、查看某一列的唯一值

        8、查看数据表的值

        9、查看列的名称

        10、查看前n行数据、后n行数据

四、数据清洗

        1、填充空值

        2、使用列price的均值对NaN进行填充:

        3、清楚city字段的字符空格

        4、大小写转换

        5、更改数据格式

        6、更改列名称

        7、删除后/先出现的重复值

         8、数据替换

五、数据处理

        1、数据表合并

                (1)merge

                (2)append

                (3)join

                (4)concat

        2、设置索引列

        3、按照特定列的值排序

        4、按照索引列排序

        5、如果price列的值>3000,group列显示high,否则显示low

        6、对复合多个条件的数据进行分组标记

        7、对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size

        8、将完成分裂后的数据表和原df_inner数据表进行匹配

六、数据提取

        1、按索引提取单行的数值

        2、按索引提取区域行数值

        3、重设索引&设置其他索引&提取选定索引数据

       4、使用iloc按位置区域提取数据

        5、适应iloc按位置单独提起数据

        6、使用ix按索引标签和位置混合提取数据

        7、判断city列的值是否为北京

        8、判断city列里是否包含beijing和shanghai,然后将符合条件的数据提取出来

        9、提取前三个字符,并生成数据表

七、数据筛选

        1、使用“与”、“或”、“非”进行筛选

        2、对筛选后的数据按city列进行计数

        3、使用query函数进行筛选

        4、对筛选后的结果按prince进行求和

八、数据汇总

        1、对所有的列进行计数汇总

        2、按年龄age对id字段进行计数

        3、对两个字段进行汇总计数

        4、对city字段进行汇总,并分别计算prince的合计和均值

九、数据统计

        1、简单的数据采样(随机)

        2、手动设置采样权重

        3、采样后不放回

        4、采样后放回

        5、 数据表描述性统计

        6、计算列的标准差

        7、计算两个字段间的协方差

        8、数据表中所有字段间的协方差

        9、两个字段的相关性分析

        10、数据表的相关性分析

十、数据输出

        1、写入Excel

        2、写入到CSV

十一、最后一些话


(^-^):导言

        众所周知,现在是数据时代,掌握数据处理方法极为重要,pandas是python的众多库中非常优秀,运用特别广泛的第三方库。(我承认,那几句是水字数,小小蒟蒻已经不好意思再夸了,但是pandas确实是非常好用的库),pandas的快乐谁用谁知道[doge]。至少学了不亏~

        必须要说明的是,作为一个蒟蒻,pandas的降解文章不是我所能写出来的,是参考了大佬的文章后根据自己学习时所感所悟做一些保姆级的讲解。(因为大佬文章中虽然有详细的代码,但是没有运行结果的展示,这对不方便自己尝试看效果的朋友是不友好的。不少小的细节对于初学者来说完全不知道,需要查阅其他小文章的降解才能理解,本蒟蒻就做一个汇总啦~)

        大佬文章链接:pandas用法总结

        前戏前摇很长,感谢大家可以看完!


一、安装pandas

        常规操作:打开cmd(windows系统的可以再屏幕左下角搜索栏目输入cmd),输入pip install pandas (python3的也可以将pip改为pip3,二者没有区别)。

pip install pandas

        参考文章:pandas的安装


二、数据表的生成(通常是导入数据表)

        1.导入库

        首先解释,通常pandas与numpy二者是一起工作的,所以养成习惯——导入pandas的同时把numpy导入!

import numpy as np
import pandas as pd

         关于numpy,如果有想学习的,我的大佬室友有讲解细致的文章,链接在此,大家随意。

        Python:numpy模块的最基础知识

        2.导入文件

df = pd.DataFrame(pd.read_csv('name.csv',header=1))#导入名为name的csv文件
df = pd.DataFrame(pd.read_excel('name.xlsx'))#导入名为name的xlsx文件
#df是常见的一种名称,根据个人习惯改成其他名称也可,但不建议,因为多数程序员都认同这个,彼此代码间易读性高

        注意:header是标题行,通过指定具体的行索引,将该行作为数据的标题行,也就是整个数据的列名。默认首行数据(0-index)作为标题行,如果传入的是一个整数列表,那这些行将组合成一个多级列索引。没有标题行使用header=None。

        !!!:来自个人经历的提醒,因为不同人电脑间的差异,

也许如:'name.csv'或'name.xlsx'之类的读取出现问题,解决方法可以尝试使用“绝对路径”!(绝对路径中如果还是出现问题可以尝试/与\互换来解决)

df=pd.read_excel('C:/Users/12345/Desktop/0/提瓦特大陆人物考.xlsx')

        或者一种不常用的方法

import pandas as pd
from collections import namedtuple

Item = namedtuple('Item', 'reply pv')
items = []

with codecs.open('reply.pv.07', 'r', 'utf-8') as f: 
    for line in f:
        line_split = line.strip().split('\t')
        items.append(Item(line_split[0].strip(), line_split[1].strip()))

df = pd.DataFrame.from_records(items, columns=['reply', 'pv'])

        在这里,为了方便讲解,我们采用自己创建的方式给大家一个实例。

df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
                   "date":pd.date_range('20130102', periods=6),
                   "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
                   "age":[23,44,54,32,34,32],
                   "category":['100-A','100-B','110-A','110-C','210-A','130-F'],
                   "price":[1200,np.nan,2133,5433,np.nan,4432]},
                   columns =['id','date','city','category','age','price'])

        所产生的数据表df结果如下

     id       date         city category  age   price
0  1001 2013-01-02     Beijing     100-A   23  1200.0
1  1002 2013-01-03           SH    100-B   44     NaN
2  1003 2013-01-04   guangzhou     110-A   54  2133.0
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0
4  1005 2013-01-06     shanghai    210-A   34     NaN
5  1006 2013-01-07     BEIJING     130-F   32  4432.0

        注意:NaN或者nan均代表空值的意思!

三、数据表信息查看

        1.维度的查看

df.shape  #表示维度,例如(6,6)表示一个6*6的表格
#这里只是告知此函数的书写,具体运行要看个人需求,比如print之类

        这是根据上部分我们自己创建的实例来运行的,方便大家理解,运行结果如下:

>>>print(df.shape)
(6, 6)  #表示维度,例如(6,6)表示一个6*6的表格

        2、数据表基本信息(维度、列名称、数据格式、所占空间等)

df.info()
#这里只是告知此函数的书写,具体运行要看个人需求,比如print之类

        基本信息的查看,具体内容会因为不同数据表而出现不同结果(以下仍为示例)

>>>print(df.info())

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 6 columns):
 #   Column    Non-Null Count  Dtype         
---  ------    --------------  -----         
 0   id        6 non-null      int64         
 1   date      6 non-null      datetime64[ns]
 2   city      6 non-null      object        
 3   category  6 non-null      object        
 4   age       6 non-null      int64         
 5   price     4 non-null      float64       
dtypes: datetime64[ns](1), float64(1), int64(2), object(2)
memory usage: 416.0+ bytes
None

        3、查看每一列数据的格式

df.dtypes
#这里只是告知此函数的书写,具体运行要看个人需求,比如print之类

         用于查看每一列数据的格式

id                   int64
date        datetime64[ns]
city                object
category            object
age                  int64
price              float64
dtype: object

        4、某一列格式

df["id"].dtype

        查看指定列(个人指定,更改中括号里面的"id"为其他即可)

>>>print(df["id"].dtype)
int64

>>>print(df["id"].dtypes)
int64

>>>print(df["city"].dtype)
object

#本蒟蒻在anocoda的spyder中运行结果是dtype是否加's'并不影响结果
#啰嗦一个稍微冷的小知识:spyder3或者spyder4并不是代表spyder的版本,而是spyder所配置的环境数量

        5、查看空值情况

df.isnull()

        此方法的返回值是判断是否为空值,是则返回True,不为空值则返回False。

运行情况如下:

>>>print(df.isnull())

      id   date   city  category    age  price
0  False  False  False     False  False  False
1  False  False  False     False  False   True
2  False  False  False     False  False  False
3  False  False  False     False  False  False
4  False  False  False     False  False   True
5  False  False  False     False  False  False

#为了方便大家理解,我附上原数据表
     id       date         city category  age   price
0  1001 2013-01-02     Beijing     100-A   23  1200.0
1  1002 2013-01-03           SH    100-B   44     NaN
2  1003 2013-01-04   guangzhou     110-A   54  2133.0
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0
4  1005 2013-01-06     shanghai    210-A   34     NaN
5  1006 2013-01-07     BEIJING     130-F   32  4432.0

        6、查看某一列空值

df['B'].isnull()

        这里是查看指定列(个人指定,更改中括号里面的"B"为其他即可)

>>>print(df["id"].isnull())

0    False
1    False
2    False
3    False
4    False
5    False
Name: id, dtype: bool

>>>print(df["city"].isnull())

0    False
1     True
2    False
3    False
4     True
5    False
Name: price, dtype: bool

        7、查看某一列的唯一值

df['B'].unique()

        根据本蒟蒻的测试,该方法的效果是返回一个列表,内容是去重之后的集合。

>>>print(df['age'].unique())
[23 44 54 32 34]
#原表中,age一列的内容是
    age
0    23
1    44
2    54
3    32
4    34
5    32

        8、查看数据表的值

df.values 

        此方法为查看所有值

>>>print(df.values)
[[1001 Timestamp('2013-01-02 00:00:00') 'Beijing ' '100-A' 23 1200.0]
 [1002 Timestamp('2013-01-03 00:00:00') 'SH' '100-B' 44 nan]
 [1003 Timestamp('2013-01-04 00:00:00') ' guangzhou ' '110-A' 54 2133.0]
 [1004 Timestamp('2013-01-05 00:00:00') 'Shenzhen' '110-C' 32 5433.0]
 [1005 Timestamp('2013-01-06 00:00:00') 'shanghai' '210-A' 34 nan]
 [1006 Timestamp('2013-01-07 00:00:00') 'BEIJING ' '130-F' 32 4432.0]]

        9、查看列的名称

df.columns

        此方法为查看所有列的名称

>>>print(df.columns)#查看列名称
Index(['id', 'date', 'city', 'category', 'age', 'price'], dtype='object')

        10、查看前n行数据、后n行数据

df.head(6)  #查看前5行数据(括号里面没有数字则默认5)
df.tail(6)  #查看后5行数据(括号里面没有数字则默认5)

        根据个人需求可以更改条件,对比运行结果如下

>>>print(df.head())#查看前5行数据(括号里面没有数字则默认5)
     id       date         city category  age   price
0  1001 2013-01-02     Beijing     100-A   23  1200.0
1  1002 2013-01-03           SH    100-B   44     NaN
2  1003 2013-01-04   guangzhou     110-A   54  2133.0
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0
4  1005 2013-01-06     shanghai    210-A   34     NaN

>>>print(df.head(6))#查看前5行数据(括号里面没有数字则默认5)
     id       date         city category  age   price
0  1001 2013-01-02     Beijing     100-A   23  1200.0
1  1002 2013-01-03           SH    100-B   44     NaN
2  1003 2013-01-04   guangzhou     110-A   54  2133.0
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0
4  1005 2013-01-06     shanghai    210-A   34     NaN
5  1006 2013-01-07     BEIJING     130-F   32  4432.0

>>>print(df.tail())#查看后5行数据(括号里面没有数字则默认5)
     id       date         city category  age   price
1  1002 2013-01-03           SH    100-B   44     NaN
2  1003 2013-01-04   guangzhou     110-A   54  2133.0
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0
4  1005 2013-01-06     shanghai    210-A   34     NaN
5  1006 2013-01-07     BEIJING     130-F   32  4432.0

>>>>>>print(df.tail(6))#查看后5行数据(括号里面没有数字则默认5)
     id       date         city category  age   price
0  1001 2013-01-02     Beijing     100-A   23  1200.0
1  1002 2013-01-03           SH    100-B   44     NaN
2  1003 2013-01-04   guangzhou     110-A   54  2133.0
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0
4  1005 2013-01-06     shanghai    210-A   34     NaN
5  1006 2013-01-07     BEIJING     130-F   32  4432.0

        相信大家看到这里也累了,下面有请本蒟蒻“诚哥壶”里两位老人为带来表演

有请“摩拉托斯”“巴巴克斯”充满智慧的注视!

四、数据清洗

        1、填充空值

df.fillna(value=0)

        不同于我所学习的大佬的用0填充空值,事实上我通过尝试发现也可以用其他来填充。

>>>df=df.fillna(0)
>>>print(df['price'])#用数字0填充空值
0    1200.0
1       0.0
2    2133.0
3    5433.0
4       0.0
5    4432.0
Name: price, dtype: float64

>>>df=df.fillna(10)
>>>print(df['price'])#用数字10填充空值
0    1200.0
1      10.0
2    2133.0
3    5433.0
4      10.0
5    4432.0
Name: price, dtype: float64

>>>df=df.fillna('空值')
>>>print(df['price'])#用数字0填充空值
0    1200
1      空值
2    2133
3    5433
4      空值
5    4432
Name: price, dtype: object

        2、使用列price的均值对NaN进行填充:

df['price'].fillna(df['price'].mean())
#使用列price的均值对NaN进行填充(均值:不为空值的n项值之和,除以n。值的总个数>n)

        这个方法有个别小细节需要注意,所谓的均值mean,它的公式表达为:非零值之和/非零值个数。

运行结果如下

>>>print(df['price'])
0    1200.0
1       NaN
2    2133.0
3    5433.0
4       NaN
5    4432.0
Name: price, dtype: float64

>>>(1200+2133+5433+4432)/4
3288.5

>>>print(df['price'].fillna(df['price'].mean()))
0    1200.0
1    3299.5
2    2133.0
3    5433.0
4    3299.5
5    4432.0
Name: price, dtype: float64

        3、清楚city字段的字符空格

df['city']=df['city'].map(str.strip)#去除空格,然后对齐。清楚city字段的字符空格

        效果就是本蒟蒻所标识的:去除空格,然后对齐。清楚city字段的字符空格

>>>print(df['city'])
0       Beijing 
1             SH
2     guangzhou 
3       Shenzhen
4       shanghai
5       BEIJING 
Name: city, dtype: object

>>>df['city']=df['city'].map(str.strip)
>>>print(df['city'])
0      Beijing
1           SH
2    guangzhou
3     Shenzhen
4     shanghai
5      BEIJING
Name: city, dtype: object

        4、大小写转换

df['city']=df['city'].str.lower()
df['city']=df['city'].str.upper()

        大小写转换,upper为转换为全部大写lower全部转换为小写。

>>>print(df['city'])
0       Beijing 
1             SH
2     guangzhou 
3       Shenzhen
4       shanghai
5       BEIJING 
Name: city, dtype: object

>>>df['city']=df['city'].str.lower()
>>>print(df['city'])
0       beijing 
1             sh
2     guangzhou 
3       shenzhen
4       shanghai
5       beijing 
Name: city, dtype: object

>>>df['city']=df['city'].str.upper()
>>>print(df['city'])
0       BEIJING 
1             SH
2     GUANGZHOU 
3       SHENZHEN
4       SHANGHAI
5       BEIJING 
Name: city, dtype: object

        5、更改数据格式

df['price'].astype('int')       

        特别提醒:在更改数据格式之前一定记得查阅此数据内容!比如此处的将price所在列更改为'int'格式,但是原数据中的nan是空值,无法转换,会报错!所以联系第一步操作,用“0”来填充空值即可。

>>>df=df.fillna(0)
>>>print(df['price'])
0    1200.0
1       0.0
2    2133.0
3    5433.0
4       0.0
5    4432.0
Name: price, dtype: float64

>>>print(df['price'].astype('int'))
0    1200
1       0
2    2133
3    5433
4       0
5    4432
Name: price, dtype: int32

        6、更改列名称

df.rename(columns={'category': 'category-size'}) 

运行效果如下 

>>>print(df.rename(columns={'category': 'category-size'}))#更改列名称
     id       date         city category-size  age   price
0  1001 2013-01-02     Beijing          100-A   23  1200.0
1  1002 2013-01-03           SH         100-B   44     NaN
2  1003 2013-01-04   guangzhou          110-A   54  2133.0
3  1004 2013-01-05     Shenzhen         110-C   32  5433.0
4  1005 2013-01-06     shanghai         210-A   34     NaN
5  1006 2013-01-07     BEIJING          130-F   32  4432.0

        7、删除后/先出现的重复值

df['city'].drop_duplicates()#删除后出现的重复值
df['city'].drop_duplicates(keep='last')#删除先出现的重复值

运行效果如下

>>>df['city']=df['city'].map(str.strip).str.lower()#还记得这几个方法是什么意思吗?不记得的翻回去再看
>>>print(df['city'])
0      beijing
1           sh
2    guangzhou
3     shenzhen
4     shanghai
5      beijing
Name: city, dtype: object

>>>print(df['city'].drop_duplicates())#删除后出现的重复值
0      beijing
1           sh
2    guangzhou
3     shenzhen
4     shanghai
Name: city, dtype: object

>>>print(df['city'].drop_duplicates(keep='last'))#删除先出现的重复值
1           sh
2    guangzhou
3     shenzhen
4     shanghai
5      beijing
Name: city, dtype: object

         8、数据替换

df['city'].replace('sh', 'shanghai')

        这个非常简洁易懂,我们看一下效果就行

>>>print(df['city'].replace('sh', 'shanghai'))#数据替换
0      beijing
1     shanghai
2    guangzhou
3     shenzhen
4     shanghai
5      beijing
Name: city, dtype: object

        学到这里,家妻不忍大家辛苦,给大家表演一个 “大家龟秀”

        什么?想看好看的?那不行,吾恐各位有枭雄之姿,家妻与吾只求一处安隅[手动滑稽] 

五、数据处理

        重新给出一个实例来讲解

>>>df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], 
"gender":['male','female','male','female','male','female','male','female'],
"pay":['Y','N','Y','Y','N','Y','N','Y',],
"m-point":[10,12,20,40,40,40,30,20]})


>>>print(df1)
     id  gender pay  m-point
0  1001    male   Y       10
1  1002  female   N       12
2  1003    male   Y       20
3  1004  female   Y       40
4  1005    male   N       40
5  1006  female   Y       40
6  1007    male   N       30
7  1008  female   Y       20

        1、数据表合并

                (1)merge

        在这里,本蒟蒻为了理解merge,又拜读了一位大佬的文章,链接在此,大家随意。

        [Python3]pandas.merge用法详解

        本蒟蒻也就在这里给大家讲讲我的理解,首先下述参数都会是用得到的。

         本蒟蒻略做改动,有了以下代码和效果展示

>>>d1=pd.DataFrame({'key':list('abcdef'),'data1':range(6)})
>>>print(d1)
  key  data1
0   a      0
1   b      1
2   c      2
3   d      3
4   e      4
5   f      5

>>>d2=pd.DataFrame({'key':['a','b','c','d'],'data2':range(3,7)})
>>>print(d2)
  key  data2
0   a      3
1   b      4
2   c      5
3   d      6

>>>print(pd.merge(d1,d2))#默认参数how是inner内连接,并且会按照相同的字段key进行合并,即等价于on=‘key’。
  key  data1  data2
0   a      0      3
1   b      1      4
2   c      2      5
3   d      3      6

        也就是说,当合并两个表格的时候,如果不添加任何其他参数说明,默认为inner。即关键词key有共同之处的才会有结果(可以理解为交集,比如d1和d2中key都有a,b,c,d,而d2没有e,f,所以合并表中只有a,b,c,d)当然,也允许表格的key列中出现重复项,在合并的时候不会删去改动,详见下图。

å¨è¿éæå¥å¾çæè¿°

         当两边合并字段不同时,可以使用left_on和right_on参数设置合并字段。当然这里合并字段都是key所以left_on和right_on参数值都是key。

å¨è¿éæå¥å¾çæè¿°

        肯定有朋友会好奇,如果这里不用key会是什么结果?

>>>print(pd.merge(d1,d2,left_on='data1',right_on='data2'))
  key_x  data1 key_y  data2
0     d      3     a      3
1     e      4     b      4
2     f      5     c      5

         这里将'data2'改为True也会有同样效果。相信聪明的朋友也猜到了,合并的关键词所在列在不作how的注明的条件下,要满足一个基本的要求:有相同的数值,否则会报错(这就是交集的理解,空集肯定不行鸭!)

        另外顺道说一下,上面的key_x与key_y的x和y是因为两个表格中的key重名了,所以生成的后缀。就像你生活中在电脑桌面建立一个文本叫“学习资料”,再建立一个新的文本,也叫“学习资料”,但是你命名后回车,它会自动改为“学习资料(1)”。同样的道理,文本可以重命名,这个地方也可以重命名!(好吧,是加后缀来区分)

>>>print(pd.merge(d1,d2,left_on='data1',right_index=True,suffixes=('A','B')))
  keyA  data1 keyB  data2
0    a      0    a      3
1    b      1    b      4
2    c      2    c      5
3    d      3    d      6

        既然有交集,那按照数学思维,肯定也有并集。没错!那就是outer!

        merge的连接方式主要包括inner(内连接)、outer(外链接)、left(左连接)、right(右连接)。当采用outer外连接时,会取并集,并用NaN填充。

>>>print(pd.merge(d1,d2,how='outer',left_on='data1',right_index=True,suffixes=('A','B')))
  keyA  data1 keyB  data2
0    a      0    a    3.0
1    b      1    b    4.0
2    c      2    c    5.0
3    d      3    d    6.0
4    e      4  NaN    NaN
5    f      5  NaN    NaN

                (2)append

result = df1.append(df2)

è¿éåå¾çæè¿°

         这里我同样也有一份查阅资料的链接,大家自便。

        pandas的DataFrame的append方法详细介绍

                append可以添加的格式不少,其中一个就是字典

>>>import pandas as pd 
>>>d1=pd.DataFrame({'key':list('abcdef'),'data1':range(6)})
>>>data=pd.DataFrame()
>>>print(data)
Empty DataFrame
Columns: []
Index: []

>>>a={"x":1,"y":2}
>>>data=data.append(a,ignore_index=True)
>>>print(data)
     x    y
0  1.0  2.0

>>>data=data.append(d1,ignore_index=True)
>>>print(data)
     x    y  key  data1
0  1.0  2.0  NaN    NaN
1  NaN  NaN    a    0.0
2  NaN  NaN    b    1.0
3  NaN  NaN    c    2.0
4  NaN  NaN    d    3.0
5  NaN  NaN    e    4.0
6  NaN  NaN    f    5.0

        ignore_index=True在添加字典的时候要有,不然会报错,但是非字典的情况下也有特殊情况(就是多次使用append会出现相同index,然后报错),建议养成习惯,敲上这句代码保命。

        添加list就直接添加,没什么大问题的。可能需要注意的就是list的维度问题:一维列二维行,三维列表作一空。

>>>data = pd.DataFrame()
>>>a = [[[1,2,3]]]
>>>data = data.append(a)
>>>print(data)
           0
0  [1, 2, 3]

                (3)join

        在小蒟蒻查阅了一些资料之后发现其实掌握了merge就可以了,join和merge是十分相似。在这里不作过多赘述,大佬链接,大家随意(其实我写不动了,这个大家也容易看懂)

        pandas方法(join篇)

        pandas中的join

                (4)concat

        细心的朋友也发现了,这是写merge那篇大佬的另一篇文章,作为参考方便理解。

        [Python3]pandas.concat用法详解

        2、设置索引列

df_inner=df_inner.set_index('id')
#帮助大家回忆这两个数据表
>>>df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], 
"gender":['male','female','male','female','male','female','male','female'],
"pay":['Y','N','Y','Y','N','Y','N','Y',],
"m-point":[10,12,20,40,40,40,30,20]})
>>>print(df1)
     id  gender pay  m-point
0  1001    male   Y       10
1  1002  female   N       12
2  1003    male   Y       20
3  1004  female   Y       40
4  1005    male   N       40
5  1006  female   Y       40
6  1007    male   N       30
7  1008  female   Y       20

>>>print(df)
     id       date         city category  age   price
0  1001 2013-01-02     Beijing     100-A   23  1200.0
1  1002 2013-01-03           SH    100-B   44     NaN
2  1003 2013-01-04   guangzhou     110-A   54  2133.0
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0
4  1005 2013-01-06     shanghai    210-A   34     NaN
5  1006 2013-01-07     BEIJING     130-F   32  4432.0

>>>df_inner=pd.merge(df,df1,how='inner')  # 匹配合并,交集
>>>print(df_inner)
     id       date         city category  age   price  gender pay  m-point
0  1001 2013-01-02     Beijing     100-A   23  1200.0    male   Y       10
1  1002 2013-01-03           SH    100-B   44     NaN  female   N       12
2  1003 2013-01-04   guangzhou     110-A   54  2133.0    male   Y       20
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0  female   Y       40
4  1005 2013-01-06     shanghai    210-A   34     NaN    male   N       40
5  1006 2013-01-07     BEIJING     130-F   32  4432.0  female   Y       40

>>>df_inner=df_inner.set_index('id')
>>>print(df_inner)
           date         city category  age   price  gender pay  m-point
id                                                                     
1001 2013-01-02     Beijing     100-A   23  1200.0    male   Y       10
1002 2013-01-03           SH    100-B   44     NaN  female   N       12
1003 2013-01-04   guangzhou     110-A   54  2133.0    male   Y       20
1004 2013-01-05     Shenzhen    110-C   32  5433.0  female   Y       40
1005 2013-01-06     shanghai    210-A   34     NaN    male   N       40
1006 2013-01-07     BEIJING     130-F   32  4432.0  female   Y       40

        3、按照特定列的值排序

df_inner.sort_values(by=['age'])
>>>print(df_inner.sort_values(by=['age']))
     id       date         city category  age   price  gender pay  m-point
0  1001 2013-01-02     Beijing     100-A   23  1200.0    male   Y       10
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0  female   Y       40
5  1006 2013-01-07     BEIJING     130-F   32  4432.0  female   Y       40
4  1005 2013-01-06     shanghai    210-A   34     NaN    male   N       40
1  1002 2013-01-03           SH    100-B   44     NaN  female   N       12
2  1003 2013-01-04   guangzhou     110-A   54  2133.0    male   Y       20

        4、按照索引列排序

df_inner.sort_index()
>>>df_inner=df_inner.set_index('age')
>>>print(df_inner)
       id       date         city category   price  gender pay  m-point
age                                                                    
23   1001 2013-01-02     Beijing     100-A  1200.0    male   Y       10
44   1002 2013-01-03           SH    100-B     NaN  female   N       12
54   1003 2013-01-04   guangzhou     110-A  2133.0    male   Y       20
32   1004 2013-01-05     Shenzhen    110-C  5433.0  female   Y       40
34   1005 2013-01-06     shanghai    210-A     NaN    male   N       40
32   1006 2013-01-07     BEIJING     130-F  4432.0  female   Y       40

>>>print(df_inner.sort_index())
       id       date         city category   price  gender pay  m-point
age                                                                    
23   1001 2013-01-02     Beijing     100-A  1200.0    male   Y       10
32   1004 2013-01-05     Shenzhen    110-C  5433.0  female   Y       40
32   1006 2013-01-07     BEIJING     130-F  4432.0  female   Y       40
34   1005 2013-01-06     shanghai    210-A     NaN    male   N       40
44   1002 2013-01-03           SH    100-B     NaN  female   N       12
54   1003 2013-01-04   guangzhou     110-A  2133.0    male   Y       20

        5、如果price列的值>3000,group列显示high,否则显示low

        这里就要讲一下numpy的一个小知识了,where的作用就是是否满足条件,满足就返回前一个选项的结果,不满足就返回后者。(group没有就创建)

df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
>>>df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
>>>print(df_inner)
     id       date         city category  ...  gender  pay m-point group
0  1001 2013-01-02     Beijing     100-A  ...    male    Y      10   low
1  1002 2013-01-03           SH    100-B  ...  female    N      12   low
2  1003 2013-01-04   guangzhou     110-A  ...    male    Y      20   low
3  1004 2013-01-05     Shenzhen    110-C  ...  female    Y      40  high
4  1005 2013-01-06     shanghai    210-A  ...    male    N      40   low
5  1006 2013-01-07     BEIJING     130-F  ...  female    Y      40  high

[6 rows x 10 columns]

        6、对复合多个条件的数据进行分组标记

df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1
>>>df_inner.loc[(df_inner['city'] == 'beijing') | (df_inner['price'] >= 4000), 'sign']=1
>>>print(df_inner)
     id       date         city category  ...  gender  pay m-point sign
0  1001 2013-01-02     Beijing     100-A  ...    male    Y      10  NaN
1  1002 2013-01-03           SH    100-B  ...  female    N      12  NaN
2  1003 2013-01-04   guangzhou     110-A  ...    male    Y      20  NaN
3  1004 2013-01-05     Shenzhen    110-C  ...  female    Y      40  1.0
4  1005 2013-01-06     shanghai    210-A  ...    male    N      40  NaN
5  1006 2013-01-07     BEIJING     130-F  ...  female    Y      40  1.0

[6 rows x 10 columns]

 学到这里,各位大佬其实一个已经对其中套路有了感觉,那么我就不赘述了,直接搬运了! 

        7、对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size

pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size']))

        8、将完成分裂后的数据表和原df_inner数据表进行匹配

df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)

六、数据提取

        主要用到的三个函数:loc,iloc和ix。loc函数按标签值进行提取,iloc按位置进行提取,ix可以同时按标签和位置进行提取。

        1、按索引提取单行的数值

        可以通过更改括号内的数值来实现对某一行的提取。

df_inner.loc[3]
>>>print(df_inner.loc[3])
id                         1004
date        2013-01-05 00:00:00
city                   Shenzhen
category                  110-C
age                          32
price                      5433
gender                   female
pay                           Y
m-point                      40
Name: 3, dtype: object
#注意这是一行,但是以一列的形式来表示

        2、按索引提取区域行数值

        通过更改范围即可。 

df_inner.iloc[0:5]
>>>print(df_inner.iloc[0:4])
     id       date         city category  age   price  gender pay  m-point
0  1001 2013-01-02     Beijing     100-A   23  1200.0    male   Y       10
1  1002 2013-01-03           SH    100-B   44     NaN  female   N       12
2  1003 2013-01-04   guangzhou     110-A   54  2133.0    male   Y       20
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0  female   Y       40

        3、重设索引&设置其他索引&提取选定索引数据

        有操作是设置索引列,而重设就是反向操作。

        注意!关于提取选定数据,如果索引为str格式,就采用['strA':'strB']的方法。如果为int格式,就必须按照常规的顺序来提取!

df_inner=df_inner.set_index('age') 
df_inner.reset_index()
df_inner=df_inner.set_index('date') 
df_inner[:'2013-01-04']
>>>print(df_inner)
     id       date         city category  age   price  gender pay  m-point
0  1001 2013-01-02     Beijing     100-A   23  1200.0    male   Y       10
1  1002 2013-01-03           SH    100-B   44     NaN  female   N       12
2  1003 2013-01-04   guangzhou     110-A   54  2133.0    male   Y       20
3  1004 2013-01-05     Shenzhen    110-C   32  5433.0  female   Y       40
4  1005 2013-01-06     shanghai    210-A   34     NaN    male   N       40
5  1006 2013-01-07     BEIJING     130-F   32  4432.0  female   Y       40

>>>df_inner=df_inner.set_index('age')
>>>print(df_inner)
       id       date         city category   price  gender pay  m-point
age                                                                    
23   1001 2013-01-02     Beijing     100-A  1200.0    male   Y       10
44   1002 2013-01-03           SH    100-B     NaN  female   N       12
54   1003 2013-01-04   guangzhou     110-A  2133.0    male   Y       20
32   1004 2013-01-05     Shenzhen    110-C  5433.0  female   Y       40
34   1005 2013-01-06     shanghai    210-A     NaN    male   N       40
32   1006 2013-01-07     BEIJING     130-F  4432.0  female   Y       40

>>>print(df_inner[:'54'])
#报错
>>>print(df_inner[:3])#输出前三位
       id       date         city category   price  gender pay  m-point
age                                                                    
23   1001 2013-01-02     Beijing     100-A  1200.0    male   Y       10
44   1002 2013-01-03           SH    100-B     NaN  female   N       12
54   1003 2013-01-04   guangzhou     110-A  2133.0    male   Y       20


>>>print(df_inner.reset_index())#重设索引
   age    id       date         city category   price  gender pay  m-point
0   23  1001 2013-01-02     Beijing     100-A  1200.0    male   Y       10
1   44  1002 2013-01-03           SH    100-B     NaN  female   N       12
2   54  1003 2013-01-04   guangzhou     110-A  2133.0    male   Y       20
3   32  1004 2013-01-05     Shenzhen    110-C  5433.0  female   Y       40
4   34  1005 2013-01-06     shanghai    210-A     NaN    male   N       40
5   32  1006 2013-01-07     BEIJING     130-F  4432.0  female   Y       40

>>>df_inner=df_inner.set_index('category') 
>>>print(df_inner)
            id       date         city   price  gender pay  m-point
category                                                           
100-A     1001 2013-01-02     Beijing   1200.0    male   Y       10
100-B     1002 2013-01-03           SH     NaN  female   N       12
110-A     1003 2013-01-04   guangzhou   2133.0    male   Y       20
110-C     1004 2013-01-05     Shenzhen  5433.0  female   Y       40
210-A     1005 2013-01-06     shanghai     NaN    male   N       40
130-F     1006 2013-01-07     BEIJING   4432.0  female   Y       40

>>>print(df_inner[:'110-C'])
            id       date         city   price  gender pay  m-point
category                                                           
100-A     1001 2013-01-02     Beijing   1200.0    male   Y       10
100-B     1002 2013-01-03           SH     NaN  female   N       12
110-A     1003 2013-01-04   guangzhou   2133.0    male   Y       20
110-C     1004 2013-01-05     Shenzhen  5433.0  female   Y       40

>>>df_inner=df_inner.set_index('date') 
>>>print(df_inner[:'2013-01-04'])
              id         city category  age   price  gender pay  m-point
date                                                                    
2013-01-02  1001     Beijing     100-A   23  1200.0    male   Y       10
2013-01-03  1002           SH    100-B   44     NaN  female   N       12
2013-01-04  1003   guangzhou     110-A   54  2133.0    male   Y       20

        以下几条易于理解,搬运给大家看即可~ 

       4、使用iloc按位置区域提取数据

df_inner.iloc[:3,:2] #冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。

        5、适应iloc按位置单独提起数据

df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列

        6、使用ix按索引标签和位置混合提取数据

df_inner.ix[:'2013-01-03',:4] #2013-01-03号之前,前四列数据

        7、判断city列的值是否为北京

df_inner['city'].isin(['beijing'])

        8、判断city列里是否包含beijing和shanghai,然后将符合条件的数据提取出来

df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])] 

        9、提取前三个字符,并生成数据表

pd.DataFrame(category.str[:3])

七、数据筛选

使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。

        1、使用“与”、“或”、“非”进行筛选

        关于这三种逻辑判断及符号,作为一个之前一直学python的蒟蒻,确实比较陌生,但是当小蒟蒻有学习C语言的经历之后发现这三者实在是亲切~~~所以大家见怪不怪,记住就好。

df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]
#“与”=> &

df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort(['age']) 
#“或”=> |

df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']) 
#“非”=> !=

        2、对筛选后的数据按city列进行计数

df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()

        3、使用query函数进行筛选

df_inner.query('city == ["beijing", "shanghai"]')
>>>print(df_inner.query('city == ["beijing", "shanghai"]'))
     id       date      city category  age  price gender pay  m-point
4  1005 2013-01-06  shanghai    210-A   34    NaN   male   N       40

        4、对筛选后的结果按prince进行求和

df_inner.query('city == ["beijing", "shanghai"]').price.sum()
>>>print(df_inner.query('city == ["beijing", "shanghai"]').price.sum())
0.0
#因为是空值所以和为0

八、数据汇总

        主要函数是groupby和pivote_table

        1、对所有的列进行计数汇总

df_inner.groupby('city').count()

        具体的理解不用我多说,大家看下面的对比就能明白 。

>>>print(df_inner.groupby('city').count())
             id  date  category  age  price  gender  pay  m-point
city                                                             
 guangzhou    1     1         1    1      1       1    1        1
BEIJING       1     1         1    1      1       1    1        1
Beijing       1     1         1    1      1       1    1        1
SH            1     1         1    1      0       1    1        1
Shenzhen      1     1         1    1      1       1    1        1
shanghai      1     1         1    1      0       1    1        1

>>>print(df_inner.groupby('age').count())
     id  date  city  category  price  gender  pay  m-point
age                                                       
23    1     1     1         1      1       1    1        1
32    2     2     2         2      2       2    2        2
34    1     1     1         1      0       1    1        1
44    1     1     1         1      0       1    1        1
54    1     1     1         1      1       1    1        1

        2、按年龄age对id字段进行计数

df_inner.groupby('age')['id'].count()
>>>print(df_inner.groupby('age')['id'].count())
age
23    1
32    2
34    1
44    1
54    1
Name: id, dtype: int64

        3、对两个字段进行汇总计数

df_inner.groupby(['city','age'])['id'].count()
>>>print(df_inner.groupby(['city','age'])['id'].count())
city         age
 guangzhou   54     1
BEIJING      32     1
Beijing      23     1
SH           44     1
Shenzhen     32     1
shanghai     34     1
Name: id, dtype: int64

        4、对city字段进行汇总,并分别计算prince的合计和均值

df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]) 
>>>print(df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]))
             len     sum    mean
city                            
 guangzhou   1.0  2133.0  2133.0
BEIJING      1.0  4432.0  4432.0
Beijing      1.0  1200.0  1200.0
SH           1.0     0.0     NaN
Shenzhen     1.0  5433.0  5433.0
shanghai     1.0     0.0     NaN

九、数据统计

        1、简单的数据采样(随机)

df_inner.sample(n=3) 
>>>print(df_inner.sample(n=3))
     id       date      city category  age   price  gender pay  m-point
5  1006 2013-01-07  BEIJING     130-F   32  4432.0  female   Y       40
3  1004 2013-01-05  Shenzhen    110-C   32  5433.0  female   Y       40
0  1001 2013-01-02  Beijing     100-A   23  1200.0    male   Y       10

>>>print(df_inner.sample(n=3))
     id       date      city category  age   price  gender pay  m-point
4  1005 2013-01-06  shanghai    210-A   34     NaN    male   N       40
1  1002 2013-01-03        SH    100-B   44     NaN  female   N       12
5  1006 2013-01-07  BEIJING     130-F   32  4432.0  female   Y       40

        2、手动设置采样权重

weights = [0, 0, 0, 0, 0.5, 0.5]
df_inner.sample(n=2, weights=weights) 
>>>weights = [0, 0, 0, 0, 0.5, 0.5]
>>>print(df_inner.sample(n=2, weights=weights))
     id       date      city category  age   price  gender pay  m-point
5  1006 2013-01-07  BEIJING     130-F   32  4432.0  female   Y       40
4  1005 2013-01-06  shanghai    210-A   34     NaN    male   N       40

        3、采样后不放回

df_inner.sample(n=6, replace=False) 

        4、采样后放回

df_inner.sample(n=6, replace=True)

 往下是统计学相关内容

本蒟蒻学过,但是又去翻教材解释太麻烦,就不多说了)

        5、 数据表描述性统计

df_inner.describe().round(2).T #round函数设置显示小数位,T表示转置
>>>print(df_inner.describe().round(2))
            id    age    price  m-point
count     6.00   6.00     4.00     6.00
mean   1003.50  36.50  3299.50    27.00
std       1.87  10.88  1966.64    14.63
min    1001.00  23.00  1200.00    10.00
25%    1002.25  32.00  1899.75    14.00
50%    1003.50  33.00  3282.50    30.00
75%    1004.75  41.50  4682.25    40.00
max    1006.00  54.00  5433.00    40.00

>>>print(df_inner.describe().round(2).T) #round函数设置显示小数位,T表示转置
         count    mean      std     min      25%     50%      75%     max
id         6.0  1003.5     1.87  1001.0  1002.25  1003.5  1004.75  1006.0
age        6.0    36.5    10.88    23.0    32.00    33.0    41.50    54.0
price      4.0  3299.5  1966.64  1200.0  1899.75  3282.5  4682.25  5433.0
m-point    6.0    27.0    14.63    10.0    14.00    30.0    40.00    40.0

        6、计算列的标准差

df_inner['price'].std()

        7、计算两个字段间的协方差

df_inner['price'].cov(df_inner['m-point']) 

        8、数据表中所有字段间的协方差

df_inner.cov()
>>>print(df_inner.cov())
                  id          age         price       m-point
id          3.500000    -0.700000  3.243333e+03     25.400000
age        -0.700000   118.300000 -2.255833e+03    -31.000000
price    3243.333333 -2255.833333  3.867667e+06  28771.666667
m-point    25.400000   -31.000000  2.877167e+04    214.000000

        9、两个字段的相关性分析

df_inner['price'].corr(df_inner['m-point']) #相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关

        10、数据表的相关性分析

df_inner.corr()

十、数据输出

下面都看得懂吧~

        1、写入Excel

df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc') 

        2、写入到CSV

df_inner.to_csv('excel_to_python.csv') 

十一、最后一些话

        最后感谢大家可以看到这里,本文内容就此结束了。下面是蒟蒻得到转载授权的截图,和代码汇总,嘿嘿~

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 20 16:27:43 2021

@author: 86133
"""
import numpy as np
import pandas as pd
df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
                   "date":pd.date_range('20130102', periods=6),
                   "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
                   "age":[23,44,54,32,34,32],
                   "category":['100-A','100-B','110-A','110-C','210-A','130-F'],
                   "price":[1200,np.nan,2133,5433,np.nan,4432]},
                   columns =['id','date','city','category','age','price'])
#print(df)
'''
print(df.shape)#表示维度,例如(6,6)表示一个6*6的表格

print(df.info())#数据表基本信息(维度、列名称、数据格式、所占空间等)

print(df.dtypes)#每一列数据的格式


print(df["city"].dtypes)#某一列格式

print(df.isnull())#查看整个表的空值

print(df["price"].isnull())#查看某一列的空值

print(df['age'])
print(df['age'].unique())#查看某一列的唯一值

print(df.values)#查看数据表的值

print(df.columns)#查看列名称

print(df.head())#查看前5行数据(括号里面没有数字则默认5)
print(df.tail())#查看后5行数据(括号里面没有数字则默认5)

df=df.fillna('空值')
print(df['price'])#用数字0填充空值

print(df['price'])
print(df['price'].fillna(df['price'].mean()))
#使用列prince的均值对NA进行填充(均值:不为空值的n项值之和,除以n。值的总个数>n)

print(df['city'])
df['city']=df['city'].map(str.strip)#去除空格,然后对齐。清楚city字段的字符空格
print(df['city'])

print(df['city'])
df['city']=df['city'].str.upper()#大小写转换,upper为转换为全部大写,lower为全部转换为小写
print(df['city'])

df=df.fillna(0)
print(df['price'])
print(df['price'].astype('int'))#更改数据格式,原来为float.


print(df.rename(columns={'category': 'category-size'}))#更改列名称

df['city']=df['city'].map(str.strip).str.lower()
print(df['city'])
print(df['city'].drop_duplicates())#删除后出现的重复值
print(df['city'].drop_duplicates(keep='last'))#删除先出现的重复值

df['city']=df['city'].map(str.strip).str.lower()
print(df['city'].replace('sh', 'shanghai'))#数据替换
'''



df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], 
"gender":['male','female','male','female','male','female','male','female'],
"pay":['Y','N','Y','Y','N','Y','N','Y',],
"m-point":[10,12,20,40,40,40,30,20]})
#print(df1)

#print(df)

df_inner=pd.merge(df,df1,how='inner')  # 匹配合并,交集
df_left=pd.merge(df,df1,how='left')        #
df_right=pd.merge(df,df1,how='right')
df_outer=pd.merge(df,df1,how='outer')  #并集
#print(df_inner)





'''
result = df1.append(df2)#上下添加
result = left.join(right, on='key')#左右添加
'''
'''
d1=pd.DataFrame({'key':list('abcdef'),'data1':range(6)})
#print(d1)
d2=pd.DataFrame({'key':['a','b','c','d'],'data2':range(3,7)})
#print(d2)
#print(pd.merge(d1,d2))
#print(pd.merge(d1,d2,left_on='data1',right_on='data2'))
print(pd.merge(d1,d2,how='outer',left_on='data1',right_index=True,suffixes=('A','B')))
'''
'''
d1=pd.DataFrame({'key':list('abcdef'),'data1':range(6)})
data=pd.DataFrame()
print(data)
a={"x":1,"y":2}
data=data.append(a,ignore_index=True)
print(data)
data=data.append(d1,ignore_index=True)
print(data)
'''

'''
df_inner=df_inner.set_index('id')
print(df_inner)

print(df_inner.sort_values(by=['age']))

df_inner=df_inner.set_index('age')
print(df_inner)
print(df_inner.sort_index())

df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
print(df_inner)

df_inner.loc[(df_inner['city'] == 'beijing') | (df_inner['price'] >= 4000), 'sign']=1
print(df_inner)

print(pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size']))

print(df_inner)
split=pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category_0','size'])
df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
print(df_inner)

print(df_inner.loc[3])

print(df_inner.iloc[0:4])

print(df_inner)
df_inner=df_inner.set_index('age')
print(df_inner[:3])
df_inner=df_inner.set_index('category') 
print(df_inner)
#print(df_inner.reset_index())#重设索引
print(df_inner[:'110-C'])

df_inner=df_inner.set_index('date') 
print(df_inner)
print(df_inner[:'2013-01-04'])

print(df_inner['city'].isin(['shanghai']))

print(df_inner.loc[df_inner['city'].isin(['Beijing ','shanghai'])])

print(df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count())

print(df_inner.query('city == ["beijing", "shanghai"]'))

print(df_inner.query('city == ["beijing", "shanghai"]').price.sum())

print(df_inner.groupby('age').count())

print(df_inner.groupby('age')['id'].count())

print(df_inner.groupby(['city','age'])['id'].count())

print(df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]))

print(df_inner.sample(n=3))

weights = [0, 0, 0, 0, 0.5, 0.5]
print(df_inner.sample(n=2, weights=weights))

print(df_inner)
print(df_inner.sample(n=3, replace=False))
print(df_inner)

print(df_inner.sample(n=3, replace=True))
print(df_inner)

print(df_inner.describe().round(2).T) #round函数设置显示小数位,T表示转置
'''
print(df_inner.cov())

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值