python之pandas用法笔记

一、生成数据表

1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用

import numpy as np
import pandas as pd

2、导入CSV或者xlsx文件:

df=pd.DataFrame(pd.read_csv('name.csv'),header=1)
df=pd.DataFrame(pd.read_excel('name.xlsx'))

3、用pandas创建数据表:

import numpy as np
import pandas as pd
 
df=pd.DataFrame({'id':[1001,1001,1003,1004,1005,1006],
               'date':pd.date_range('20180101',periods=6),  # 固定频率的DatetimeIndex
               'city':['beijing','shagnhai ','guangzhou','chengdu',' wuhan',' qingdao '],
                'age':[22,45,56,33,24,43],
           'category':['100-A','101-B','102-C','103-D','104-E','105-F'],
              'price':[1000,np.nan,3000,4000,np.nan,6000]},
               columns=['id','date','city','age','category','price'])
print(df)
 
-------------------执行以上程序,返回的结果为-------------------
     id       date       city  age category   price
0  1001 2018-01-01    beijing   22    100-A  1000.0
1  1001 2018-01-02   shagnhai   45    101-B     NaN
2  1003 2018-01-03  guangzhou   56    102-C  3000.0
3  1004 2018-01-04    chengdu   33    103-D  4000.0
4  1005 2018-01-05      wuhan   24    104-E     NaN
5  1006 2018-01-06    qingdao   43    105-F  6000.0

二、数据表信息查看

1、维度查看

df.shape

-------------------执行以上程序,返回的结果为-------------------

(6, 6)

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

df.info()

-------------------执行以上程序,返回的结果为-------------------

查看表的基本信息:<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 6 columns):
id          6 non-null int64
date        6 non-null datetime64[ns]
city        6 non-null object
age         6 non-null int64
category    6 non-null object
price       4 non-null float64
dtypes: datetime64[ns](1), float64(1), int64(2), object(2)
memory usage: 368.0+ bytes
None

3、每一列数据的格式:

df.dtypes

-------------------执行以上程序,返回的结果为-------------------

每一列数据的格式:
id                   int64
date        datetime64[ns]
city                object
age                  int64
category            object
price              float64
dtype: object

4、某一列格式:

df['city'].dtype

-------------------执行以上程序,返回的结果为-------------------

某一列数据的格式:
object

5、空值:

df.isnull()

-------------------执行以上程序,返回的结果为-------------------

空值:

      id   date   city    age  category  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

6、查看某一列空值:

df['age'].isnull()

-------------------执行以上程序,返回的结果为-------------------

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

7、查看某一列的唯一值:

prinnt("查看某一列的唯一值:")
df['id'].unique()

-------------------执行以上程序,返回的结果为-------------------

查看某一列的唯一值:
[1001 1003 1004 1005 1006]

8、查看数据表的值:

df.values

-------------------执行以上程序,返回的结果为-------------------

查看数据表的值:

[[1001 Timestamp('2018-01-01 00:00:00') 'beijing' 22 '100-A' 1000.0]
 [1001 Timestamp('2018-01-02 00:00:00') 'shagnhai' 45 '101-B' nan]
 [1003 Timestamp('2018-01-03 00:00:00') 'guangzhou' 56 '102-C' 3000.0]
 [1004 Timestamp('2018-01-04 00:00:00') 'chengdu' 33 '103-D' 4000.0]
 [1005 Timestamp('2018-01-05 00:00:00') 'wuhan' 24 '104-E' nan]
 [1006 Timestamp('2018-01-06 00:00:00') 'qingdao' 43 '105-F' 6000.0]]

 9、查看列名称:

df.columns

-------------------执行以上程序,返回的结果为-------------------

查看列名称:Index(['id', 'date', 'city', 'age', 'category', 'price'], dtype='object')

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

复制代码

df.head() #默认显示前5行

df.tail() #默认显示后5行

df.head() #默认显示前5行
df.tail() #默认显示后5行

-------------------执行以上程序,返回的结果为-------------------

     id       date       city  age category   price
0  1001 2018-01-01    beijing   22    100-A  1000.0
1  1001 2018-01-02  shagnhai    45    101-B     NaN
2  1003 2018-01-03  guangzhou   56    102-C  3000.0
3  1004 2018-01-04    chengdu   33    103-D  4000.0
4  1005 2018-01-05      wuhan   24    104-E     NaN

     id       date       city  age category   price
1  1001 2018-01-02  shagnhai    45    101-B     NaN
2  1003 2018-01-03  guangzhou   56    102-C  3000.0
3  1004 2018-01-04    chengdu   33    103-D  4000.0
4  1005 2018-01-05      wuhan   24    104-E     NaN
5  1006 2018-01-06   qingdao    43    105-F  6000.0

三、数据表清洗

1、用数字0填充空值:

df.fillna(value=0)

-------------------执行以上程序,返回的结果为-------------------

用数字0填充空值:
     id       date       city  age category   price
0  1001 2018-01-01    beijing   22    100-A  1000.0
1  1001 2018-01-02   shagnhai   45    101-B     0.0
2  1003 2018-01-03  guangzhou   56    102-C  3000.0
3  1004 2018-01-04    chengdu   33    103-D  4000.0
4  1005 2018-01-05      wuhan   24    104-E     0.0
5  1006 2018-01-06    qingdao   43    105-F  6000.0

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

df['price'].fillna(df['price'].mean())  # 均值为3500

-------------------执行以上程序,返回的结果为-------------------

使用price的均值对NAN进行填充:
0    1000.0
1    3500.0
2    3000.0
3    4000.0
4    3500.0
5    6000.0

3、清除city字段的字符空格:

df['city'].map(str.strip)

-------------------执行以上程序,返回的结果为-------------------

清除city字段的字符空格:
0      beijing
1     shagnhai
2    guangzhou
3      chengdu
4        wuhan
5      qingdao
Name: city, dtype: object

4、大小写转换:
 

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

-------------------执行以上程序,返回的结果为-------------------

大小写转换:
0      beijing
1     shagnhai
2    guangzhou
3      chengdu
4        wuhan
5      qingdao
Name: city, dtype: object

5、更改数据格式:

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

-------------------执行以上程序,返回的结果为-------------------

更改数据格式:
0    1000.0
1       NaN
2    3000.0
3    4000.0
4       NaN
5    6000.0
Name: price, dtype: float64

6、更改列名称:

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

-------------------执行以上程序,返回的结果为-------------------

更改列名称:
     id       date       city  age category-size   price
0  1001 2018-01-01    beijing   22         100-A  1000.0
1  1001 2018-01-02   shagnhai   45         101-B     NaN
2  1003 2018-01-03  guangzhou   56         102-C  3000.0
3  1004 2018-01-04    chengdu   33         103-D  4000.0
4  1005 2018-01-05      wuhan   24         104-E     NaN
5  1006 2018-01-06    QINGDAO   43         105-F  6000.0

7、删除后出现的重复值:

df['id'].drop_duplicates()

-------------------执行以上程序,返回的结果为-------------------

删除后出现的重复的值:
0    1001
2    1003
3    1004
4    1005
5    1006
Name: id, dtype: int64

 8、删除先出现的重复值
 

df['id'].drop_duplicates(keep='last')

-------------------执行以上程序,返回的结果为-------------------

删除先出现的重复的值:
1    1001
2    1003
3    1004
4    1005
5    1006
Name: id, dtype: int64

 9、数据替换:

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

-------------------执行以上程序,返回的结果为-------------------

数据替换:
0      beijing
1           sh
2    guangzhou
3      chengdu
4        wuhan
5      QINGDAO
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]})

1、数据表合并

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')

-------------------执行以上程序,返回的结果为-------------------

默认:inner 内连接,取交集
     id       date       city  age category   price  gender pay  m-point
0  1001 2018-01-01    beijing   22    100-A  1000.0    male   Y       10
1  1001 2018-01-02  shagnhai    45    101-B     NaN    male   Y       10
2  1003 2018-01-03  guangzhou   56    102-C  3000.0    male   Y       20
3  1004 2018-01-04    chengdu   33    103-D  4000.0  female   Y       40
4  1005 2018-01-05      wuhan   24    104-E     NaN    male   N       40
5  1006 2018-01-06   qingdao    43    105-F  6000.0  female   Y       40

left 左连接, 左侧取全部,右侧取部分
     id       date       city  age category   price  gender pay  m-point
0  1001 2018-01-01    beijing   22    100-A  1000.0    male   Y       10
1  1001 2018-01-02  shagnhai    45    101-B     NaN    male   Y       10
2  1003 2018-01-03  guangzhou   56    102-C  3000.0    male   Y       20
3  1004 2018-01-04    chengdu   33    103-D  4000.0  female   Y       40
4  1005 2018-01-05      wuhan   24    104-E     NaN    male   N       40
5  1006 2018-01-06   qingdao    43    105-F  6000.0  female   Y       40

right 右连接,左侧取部分,右侧取全部
     id       date       city   age category   price  gender pay  m-point
0  1001 2018-01-01    beijing  22.0    100-A  1000.0    male   Y       10
1  1001 2018-01-02  shagnhai   45.0    101-B     NaN    male   Y       10
2  1003 2018-01-03  guangzhou  56.0    102-C  3000.0    male   Y       20
3  1004 2018-01-04    chengdu  33.0    103-D  4000.0  female   Y       40
4  1005 2018-01-05      wuhan  24.0    104-E     NaN    male   N       40
5  1006 2018-01-06   qingdao   43.0    105-F  6000.0  female   Y       40
6  1002        NaT        NaN   NaN      NaN     NaN  female   N       12
7  1007        NaT        NaN   NaN      NaN     NaN    male   N       30
8  1008        NaT        NaN   NaN      NaN     NaN  female   Y       20

outer 外连接,取并集,并用nan填充
     id       date       city   age category   price  gender pay  m-point
0  1001 2018-01-01    beijing  22.0    100-A  1000.0    male   Y       10
1  1001 2018-01-02  shagnhai   45.0    101-B     NaN    male   Y       10
2  1003 2018-01-03  guangzhou  56.0    102-C  3000.0    male   Y       20
3  1004 2018-01-04    chengdu  33.0    103-D  4000.0  female   Y       40
4  1005 2018-01-05      wuhan  24.0    104-E     NaN    male   N       40
5  1006 2018-01-06   qingdao   43.0    105-F  6000.0  female   Y       40
6  1002        NaT        NaN   NaN      NaN     NaN  female   N       12
7  1007        NaT        NaN   NaN      NaN     NaN    male   N       30
8  1008        NaT        NaN   NaN      NaN     NaN  female   Y       20

2、设置索引列
 

df_inner.set_index('id')

-------------------执行以上程序,返回的结果为-------------------

设置索引列:
           date       city  age category   price  gender pay  m-point
id                                                                   
1001 2018-01-01    beijing   22    100-A  1000.0    male   Y       10
1001 2018-01-02  shagnhai    45    101-B     NaN    male   Y       10
1003 2018-01-03  guangzhou   56    102-C  3000.0    male   Y       20
1004 2018-01-04    chengdu   33    103-D  4000.0  female   Y       40
1005 2018-01-05      wuhan   24    104-E     NaN    male   N       40
1006 2018-01-06   qingdao    43    105-F  6000.0  female   Y       40

3、按照特定列的值排序:

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

-------------------执行以上程序,返回的结果为-------------------

按照特定列的值进行排序:
     id       date       city  age category   price  gender pay  m-point
0  1001 2018-01-01    beijing   22    100-A  1000.0    male   Y       10
4  1005 2018-01-05      wuhan   24    104-E     NaN    male   N       40
3  1004 2018-01-04    chengdu   33    103-D  4000.0  female   Y       40
5  1006 2018-01-06    QINGDAO   43    105-F  6000.0  female   Y       40
1  1001 2018-01-02   shagnhai   45    101-B     NaN    male   Y       10
2  1003 2018-01-03  guangzhou   56    102-C  3000.0    male   Y       20

4、按照索引列排序:

df_inner.sort_index()

-------------------执行以上程序,返回的结果为-------------------

按照索引列排序:
     id       date       city  age category   price  gender pay  m-point
0  1001 2018-01-01    beijing   22    100-A  1000.0    male   Y       10
1  1001 2018-01-02   shagnhai   45    101-B     NaN    male   Y       10
2  1003 2018-01-03  guangzhou   56    102-C  3000.0    male   Y       20
3  1004 2018-01-04    chengdu   33    103-D  4000.0  female   Y       40
4  1005 2018-01-05      wuhan   24    104-E     NaN    male   N       40
5  1006 2018-01-06    QINGDAO   43    105-F  6000.0  female   Y       40

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

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

-------------------执行以上程序,返回的结果为-------------------

如果price>3000,group列展示high,否则展示low:
     id       date       city  age category   price  gender pay  m-point group
0  1001 2018-01-01    beijing   22    100-A  1000.0    male   Y       10   low
1  1001 2018-01-02   shagnhai   45    101-B     NaN    male   Y       10   low
2  1003 2018-01-03  guangzhou   56    102-C  3000.0    male   Y       20   low
3  1004 2018-01-04    chengdu   33    103-D  4000.0  female   Y       40  high
4  1005 2018-01-05      wuhan   24    104-E     NaN    male   N       40   low
5  1006 2018-01-06    QINGDAO   43    105-F  6000.0  female   Y       40  high

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

df_inner.loc[(df_inner['city']=='beijing')&(df_inner['price']>100),'sign']=1

-------------------执行以上程序,返回的结果为-------------------

对复合多个条件的数据进行分组标记:
     id       date       city  age category   price  gender pay  m-point group  sign
0  1001 2018-01-01    beijing   22    100-A  1000.0    male   Y       10   low   1.0
1  1001 2018-01-02   shagnhai   45    101-B     NaN    male   Y       10   low   NaN
2  1003 2018-01-03  guangzhou   56    102-C  3000.0    male   Y       20   low   NaN
3  1004 2018-01-04    chengdu   33    103-D  4000.0  female   Y       40  high   NaN
4  1005 2018-01-05      wuhan   24    104-E     NaN    male   N       40   low   NaN
5  1006 2018-01-06    QINGDAO   43    105-F  6000.0  female   Y       40  high   NaN

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

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

-------------------执行以上程序,返回的结果为-------------------

  category size
0      100    A
1      101    B
2      102    C
3      103    D
4      104    E
5      105    F

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

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

-------------------执行以上程序,返回的结果为-------------------

     id       date       city  age category_x   price  gender pay  m-point group  sign category_y size
0  1001 2018-01-01    beijing   22      100-A  1000.0    male   Y       10   low   1.0        100    A
1  1001 2018-01-02   shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B
2  1003 2018-01-03  guangzhou   56      102-C  3000.0    male   Y       20   low   NaN        102    C
3  1004 2018-01-04    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
4  1005 2018-01-05      wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E
5  1006 2018-01-06    QINGDAO   43      105-F  6000.0  female   Y       40  high   NaN        105    F

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

df_inner.loc[3]

-------------------执行以上程序,返回的结果为-------------------

按索引提取单行的数值:
id                           1004
date          2018-01-04 00:00:00
city                      chengdu
age                            33
category_x                  103-D
price                        4000
gender                     female
pay                             Y
m-point                        40
group                        high
sign                          NaN
category_y                    103
size                            D
Name: 3, dtype: object

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

df_inner.iloc[0:5]

-------------------执行以上程序,返回的结果为-------------------

按索引提取区域行数值:
     id       date       city  age category_x   price  gender pay  m-point group  sign category_y size
0  1001 2018-01-01    beijing   22      100-A  1000.0    male   Y       10   low   1.0        100    A
1  1001 2018-01-02   shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B
2  1003 2018-01-03  guangzhou   56      102-C  3000.0    male   Y       20   low   NaN        102    C
3  1004 2018-01-04    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
4  1005 2018-01-05      wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E

3、重设索引

# 获得新的index,原来的index变成数据列,保留下来 
# 不想保留原来的index,使用参数 drop=True,默认 False
df_inner.reset_index()
-------------------执行以上程序,返回的结果为-------------------

重设索引:
   index    id       date       city  age category_x   price  gender pay  m-point group  sign category_y size
0      0  1001 2018-01-01    beijing   22      100-A  1000.0    male   Y       10   low   1.0        100    A
1      1  1001 2018-01-02   shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B
2      2  1003 2018-01-03  guangzhou   56      102-C  3000.0    male   Y       20   low   NaN        102    C
3      3  1004 2018-01-04    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
4      4  1005 2018-01-05      wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E
5      5  1006 2018-01-06    QINGDAO   43      105-F  6000.0  female   Y       40  high   NaN        105    F

4、设置日期为索引

df_inner.set_index('date')

-------------------执行以上程序,返回的结果为-------------------

设置日期为索引:
              id       city  age category_x   price  gender pay  m-point group  sign category_y size
date
2018-01-01  1001    beijing   22      100-A  1000.0    male   Y       10   low   1.0        100    A
2018-01-02  1001   shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B
2018-01-03  1003  guangzhou   56      102-C  3000.0    male   Y       20   low   NaN        102    C
2018-01-04  1004    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
2018-01-05  1005      wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E
2018-01-06  1006    QINGDAO   43      105-F  6000.0  female   Y       40  high   NaN        105    F

5、提取4日之前的所有数据

df_inner.ix[:'2018-01-04']

-------------------执行以上程序,返回的结果为-------------------

     id       date       city  age category_x   price gender pay  m-point group  sign category_y size
0  1001 2018-01-01    beijing   22      100-A  1000.0   male   Y       10   low   1.0        100    A
1  1001 2018-01-02   shagnhai   45      101-B     NaN   male   Y       10   low   NaN        101    B
2  1003 2018-01-03  guangzhou   56      102-C  3000.0   male   Y       20   low   NaN        102    C

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

df_inner.iloc[0:5]

-------------------执行以上程序,返回的结果为-------------------

按位置顺序提取数据:
     id       date       city  age category_x   price  gender pay  m-point group  sign category_y size
0  1001 2018-01-01    beijing   22      100-A  1000.0    male   Y       10   low   1.0        100    A
1  1001 2018-01-02   shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B
2  1003 2018-01-03  guangzhou   56      102-C  3000.0    male   Y       20   low   NaN        102    C
3  1004 2018-01-04    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
4  1005 2018-01-05      wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E

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

df_inner.iloc[[0,2,5],[4,5]]

-------------------执行以上程序,返回的结果为-------------------

  category_x   price
0      100-A  1000.0
2      102-C  3000.0
5      105-F  6000.0

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

df_inner.ix[:'2018-01-03',:4]

-------------------执行以上程序,返回的结果为-------------------

     id       date       city  age
0  1001 2018-01-01    beijing   22
1  1001 2018-01-02   shagnhai   45
2  1003 2018-01-03  guangzhou   56

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

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

-------------------执行以上程序,返回的结果为-------------------

判断city列的值是否为北京:
0     True
1    False
2    False
3    False
4    False
5    False

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

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


-------------------执行以上程序,返回的结果为-------------------

     id       date     city  age category_x   price gender pay  m-point group  sign category_y size
0  1001 2018-01-01  beijing   22      100-A  1000.0   male   Y       10   low   1.0        100    A

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

pd.DataFrame(df_inner.category.str[:3])  # 提取每列元素的前三个字符

-------------------执行以上程序,返回的结果为-------------------

  category
0      100
1      101
2      102
3      103
4      104
5      105

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

df_inner.loc[(df_inner['age']>20)&(df_inner['city']=='beijing'),['id','gender']]

-------------------执行以上程序,返回的结果为-------------------

使用与进行筛选:
     id gender
0  1001   male

2、使用“或”进行筛选

df_inner.loc[(df_inner['age']>20)|(df_inner['city']=='beijing'),['id','gender']])

-------------------执行以上程序,返回的结果为-------------------

使用或进行筛选:
     id  gender  age
0  1001    male   22
1  1001    male   45
2  1003    male   56
3  1004  female   33
4  1005    male   24
5  1006  female   43

3、使用“非”条件进行筛选

df_inner.loc[(df_inner['city']!='beijing'),['id','gender','city']]

-------------------执行以上程序,返回的结果为-------------------

使用非条件进行筛选:
     id  gender       city
1  1001    male   shagnhai
2  1003    male  guangzhou
3  1004  female    chengdu
4  1005    male      wuhan
5  1006  female    QINGDAO

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

df_inner.loc[(df_inner['city']=='beijing')].city.count()  # .city等价于["city"]

-------------------执行以上程序,返回的结果为-------------------

对筛选后的数据进行计数:
1

5、使用query函数进行筛选

df_inner.query('city==["beijing","shanghai"]') # city列中数值为"beijing","shanghai"的行记录

-------------------执行以上程序,返回的结果为-------------------

使用query函数进行筛选:
     id       date     city  age category_x   price gender pay  m-point group  sign category_y size
0  1001 2018-01-01  beijing   22      100-A  1000.0   male   Y       10   low   1.0        100    A

6、对筛选后的结果按price进行求和

df_inner[(df_inner['city']=='beijing')].price.sum()

-------------------执行以上程序,返回的结果为-------------------

对筛选后的结果按price进行求和:
1000.0

七、数据汇总 
主要函数是groupby和pivote_table

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

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

-------------------执行以上程序,返回的结果为-------------------

对所有的列进行计数汇总:
           id  date  age  category_x  price  gender  pay  m-point  group  sign  category_y  size
city
QINGDAO     1     1    1           1      1       1    1        1      1     0           1     1
beijing     1     1    1           1      1       1    1        1      1     1           1     1
chengdu     1     1    1           1      1       1    1        1      1     0           1     1
guangzhou   1     1    1           1      1       1    1        1      1     0           1     1
shagnhai    1     1    1           1      0       1    1        1      1     0           1     1
wuhan       1     1    1           1      0       1    1        1      1     0           1     1

2、按城市对id字段进行计数

df_inner.groupby('city')['id'].count()

-------------------执行以上程序,返回的结果为-------------------

按城市对id进行计数:
city
QINGDAO      1
beijing      1
chengdu      1
guangzhou    1
shagnhai     1
wuhan        1

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

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

-------------------执行以上程序,返回的结果为-------------------

对两个字段进行计数汇总:
city       size
QINGDAO    F       1
beijing    A       1
chengdu    D       1
guangzhou  C       1
shagnhai   B       1
wuhan      E       1
Name: id, dtype: int64

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

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

-------------------执行以上程序,返回的结果为-------------------

对city字段进行汇总,并分别计算price的合计和均值:
           len     sum    mean
city
QINGDAO    1.0  6000.0  6000.0
beijing    1.0  1000.0  1000.0
chengdu    1.0  4000.0  4000.0
guangzhou  1.0  3000.0  3000.0
shagnhai   1.0     0.0     NaN
wuhan      1.0     0.0     NaN

八、数据统计 
数据采样,计算标准差,协方差和相关系数 
1、简单的数据采样

df_inner.sample(n=3)

-------------------执行以上程序,返回的结果为-------------------

简单的数据采样:
     id       date      city  age category_x   price  gender pay  m-point group  sign category_y size
5  1006 2018-01-06   QINGDAO   43      105-F  6000.0  female   Y       40  high   NaN        105    F
1  1001 2018-01-02  shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B
0  1001 2018-01-01   beijing   22      100-A  1000.0    male   Y       10   low   1.0        100    A

2、手动设置采样权重

weights=[0,0,0,0,0.5,0.5]

df_inner.sample(n=2,weights=weights)

-------------------执行以上程序,返回的结果为-------------------

手动设置采样权限:
     id       date     city  age category_x   price  gender pay  m-point group  sign category_y size
4  1005 2018-01-05    wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E
5  1006 2018-01-06  QINGDAO   43      105-F  6000.0  female   Y       40  high   NaN        105    F

3、采样后不放回

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

-------------------执行以上程序,返回的结果为-------------------

采样后不放回:
     id       date       city  age category_x   price  gender pay  m-point group  sign category_y size
0  1001 2018-01-01    beijing   22      100-A  1000.0    male   Y       10   low   1.0        100    A
3  1004 2018-01-04    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
5  1006 2018-01-06    QINGDAO   43      105-F  6000.0  female   Y       40  high   NaN        105    F
2  1003 2018-01-03  guangzhou   56      102-C  3000.0    male   Y       20   low   NaN        102    C
1  1001 2018-01-02   shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B
4  1005 2018-01-05      wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E

4、采样后放回

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

-------------------执行以上程序,返回的结果为-------------------

采样后放回:
     id       date       city  age category_x   price  gender pay  m-point group  sign category_y size
2  1003 2018-01-03  guangzhou   56      102-C  3000.0    male   Y       20   low   NaN        102    C
3  1004 2018-01-04    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
3  1004 2018-01-04    chengdu   33      103-D  4000.0  female   Y       40  high   NaN        103    D
5  1006 2018-01-06    QINGDAO   43      105-F  6000.0  female   Y       40  high   NaN        105    F
4  1005 2018-01-05      wuhan   24      104-E     NaN    male   N       40   low   NaN        104    E
1  1001 2018-01-02   shagnhai   45      101-B     NaN    male   Y       10   low   NaN        101    B

5、 数据表描述性统计

df_inner.descbibe().round(2).T

-------------------执行以上程序,返回的结果为-------------------

据表描述性统计:
         count     mean      std     min      25%     50%      75%     max
id         6.0  1003.33     2.07  1001.0  1001.50  1003.5  1004.75  1006.0
age        6.0    37.17    13.20    22.0    26.25    38.0    44.50    56.0
price      4.0  3500.00  2081.67  1000.0  2500.00  3500.0  4500.00  6000.0
m-point    6.0    26.67    15.06    10.0    12.50    30.0    40.00    40.0
sign       1.0     1.00      NaN     1.0     1.00     1.0     1.00     1.0

6、计算列的标准差

df_inner['price'].std()

-------------------执行以上程序,返回的结果为-------------------

计算列的标准差:
2081.6659994661327

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

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

-------------------执行以上程序,返回的结果为-------------------

计算两个字段间的协方差:
28333.333333333332

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

df_inner.cov()

-------------------执行以上程序,返回的结果为-------------------

数据表中所有字段间的协方差:
                  id           age         price       m-point  sign
id          4.266667      0.333333  4.333333e+03     29.333333   NaN
age         0.333333    174.166667  1.366667e+04    -31.333333   NaN
price    4333.333333  13666.666667  4.333333e+06  28333.333333   NaN
m-point    29.333333    -31.333333  2.833333e+04    226.666667   NaN
sign             NaN           NaN           NaN           NaN   NaN

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

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

-------------------执行以上程序,返回的结果为-------------------

两个字段的相关性分析:
0.9073928715621604

10、数据表的相关性分析

df_inner.corr()

-------------------执行以上程序,返回的结果为-------------------

数据表中所有字段的相关性分析:
               id       age     price   m-point  sign
id       1.000000  0.012228  1.000000  0.943242   NaN
age      0.012228  1.000000  0.453406 -0.157699   NaN
price    1.000000  0.453406  1.000000  0.907393   NaN
m-point  0.943242 -0.157699  0.907393  1.000000   NaN
sign          NaN       NaN       NaN       NaN   NaN

九、数据输出 
分析后的数据可以输出为xlsx格式和csv格式

1、写入Excel

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

2、写入到CSV

df_inner.to_csv('excel_to_python.csv')

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值