数据分析----pandas

数据分析----pandas

核心数据结构 Series & DataFrame

import pandas as pd
import numpy as npfrom pandas 
import Series, DataFrame

Series是一个定长的字典序列,它有两个基本属性index 、 value index 默认是 0 ,1,2,3 递增的,也可以自己指定索引 index=[‘a’, ‘b’, ‘c’]

创建Series的三种方式

x1 = Series([1,2,3,4])
x2 = Series(data=[1,2,3,4],index=['a','b','c','d'])
dic = {'a':1,'b':2,'c':3,'d':4}
x3 = Series(dic)
print(x1)
print(x2)
print(x3)
0    1    1    2    2    3    3    4    
dtype: int64    
a    1    b    2    c    3    d    4    
dtype: int64    
a    1    b    2    c    3    d    4    
dtype: int64

DataFrame类似数据库中的表,可以将其看成是由有相同的索引的Series组成

创建DataFra几种方式

data = {"chinese":[90,80,70,60,50],'math':[70,80,70,90,60],'english':[30,50,70,80,60]}
df1 = DataFrame(data=data,index=['zhangfei','guanyu','zhaoyun','huangzhong','machao'])
print(df)
            chinese  english  math    
zhangfei         90       30    70    
guanyu           80       50    80    
zhaoyun          70       70    70   
huangzhong       60       80    90   
machao           50       60    60
import xlrddf2 = DataFrame(pd.read_excel('datas/grades.xlsx'))
df2 = df2.drop_duplicates()
print(df2)
            姓名   高数  英语  C++    
     0   蒋广佳   43  69   61    
     1    廖菲   80  64   62    
     2   沈秀玲   68  74   98    
     3    韦丹   48  53   64    
     4   张梦雅   72  73   96    
     5   赵雅欣   60  63   70    
     6   曹海广   74  60   20    
     7   陈泽灿   38  21   92    
     8    邓杰   88  67   84    
        。。。。。。。。。。

数据清洗

删除不必要的行或列

#删除行
df2 = df2.drop(columns=['姓名'])
print(df2)
          高数  英语  C++    
     0    43  69   61    
     1    80  64   62    
     2    68  74   98   
     3    48  53   64    
     4    72  73   96  
#删除列
df2 = df2.drop(index = [27])
print(df2)
         高数  英语  C++    
    0    43  69   61    
    1    80  64   62    
    2    68  74   98    
    3    48  53   64    
    4    72  73   96  

重命名列名

df2 = df2.rename(columns={'高数':'math','英语':'english'})

去除重复的值

df2 = df2.drop_duplicates()

更改数据格式

df2['math'] = df2['math'].astype('str')
#df2['math'].astype(np.int64)

清除数据间的空格

df2['math'] = df2['math'].map(str.strip) #删除左右两边的空格
df2['math'] = df2['math'].map(str.lstrip) #删除左边的空格(str.rstrip 右边的空格)

删除指定字符

df2['math'] = df2['math'].str.strip('$')

大小写转换

df2.columns = df2.columns.str.upper() #全部大写(lower()全部小写 title()首字母大写)

pythondf2

MATHENGLISHC++
0436961
1806462
2687498
3485364
4727396
5606370
6746020
7382192
8886784
9867496
10846090
11646996
12603370
13765684
14685494
15686398
16394456
17906390
18646378
19746076
20524894
21606974
22704976
23916786
24787388
251006098
268063100

使用apply函数对数据进行清洗

#df2['MATH'] = df2['MATH'].apply(str.lower)
df2['MATH'] = df2['MATH'].astype(np.int64)
MATHENGLISHC++
0436961
1806462
2687498
3485364
4727396
5606370
6746020
7382192
8886784
9867496
10846090
11646996
12603370
13765684
14685494
15686398
16394456
17906390
18646378
19746076
20524894
21606974
22704976
23916786
24787388
251006098
268063100
def plus(df):    
	df['Total'] = df['MATH']+df['ENGLISH']+df['C++']    
	return dfdf2 = df2.apply(plus,axis=1)
print(df2)
          MATH  ENGLISH  C++  Total    
    0     43       69   61    173   
     1     80       64   62    206    
     2     68       74   98    240    
     3     48       53   64    165    
     4     72       73   96    241    

pandas中常用的统计函数

在这里插入图片描述

print(df2.describe())
                            MATH    ENGLISH         C++     Total   
              count   27.000000  27.000000   27.000000   27.000000    
              mean    69.444444  59.703704   81.148148  210.296296    
              std     16.113380  12.406000   17.933003   34.410212    
              min     38.000000  21.000000   20.000000  139.000000    
              25%     60.000000  55.000000   72.000000  193.500000    
              50%     70.000000  63.000000   86.000000  216.000000    
              75%     80.000000  68.000000   95.000000  239.500000    
              max    100.000000  74.000000  100.000000  258.000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值