ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Pandas——DataFrame函数使用

2021-05-07 17:05:56  阅读:219  来源: 互联网

标签:函数 students DataFrame Leo print 100 Avg Pandas Name


# encoding: utf-8
from __future__ import division
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import numpy as np
import pandas as pd
# 1.创建DataFrame的几种方式
#######1.1纯字典创建
students={'names':['Leo','Jack','James'],'scores':[100,90,80]}
df=pd.DataFrame(students)
print df
######1.2字典加列表
scores={'Scores':[100,90,80]}
names=['Leo','Jack','James']
df=pd.DataFrame(scores,index=names)
print df
#先把字典扩展一下,加上Ages键值对
ages={'Ages':[20,23,25]}
scores.update(ages)
df=pd.DataFrame(scores,index=names)
print df
# 1.3用NumPy数组的创建
df = pd.DataFrame(np.arange(9).reshape(3,3))
print df
#行和列取名字
# 行和列都是pandas取默认的数值,如果我们自定义行和列的名字,可以按照下面的形式,加上index和columns关键字
df= pd.DataFrame(np.arange(9).reshape(3, 3),index=['row1','row2','row3'],columns=['col1','col2','col3'])
print df
print df.describe()
#看看它的describe函数都显示啥
# 跟Series的很类似,只是按照每一列进行统计
###############2.索引选取,切片
students=pd.DataFrame({'Name':['Leo','Jack','Lili'],
                        'Scores':[100,90,80],
                        'Sex':['M','M','W']})
print students
# 1).获取某一列的数据
print students['Name']#也可以students.Name
# 有同学说,这不就是前面讲的Series吗,对啊,不行我们打一下type看看
print type(students['Name'])
# 2).获取某一行的数据,用ix(index of label)
print students.ix[0]
# 看pandas多贴心,把列名也显示出来了
# 3).切片获取多行
print students[0:2]
# 4),切片获取多列
print students[['Name','Sex']]
# 或者只想取前两列,前两行
print students.ix[0:1,[0,1]]
######################## 3.修改和删除
students['Scores']=100
print students
# 2).增加一列
students['hobby']=['music','movie','singing']
print students
# 3).删除某列,比如删掉Sex列
# del students['Sex']
print students
############################### 4.过滤数据
#比如:过滤出学生的成绩大于等于90分的
print students[students.Scores>=90]
#比如:过滤出列里是女生的数据
print students[students.Sex=='W']
citys = ['ShangHai', 'BeiJing', 'NanJing', 'HangZhou', 'WuHan',
         'JiNan', 'FuZhou', 'GuangZhou', 'ChongQing', 'HaiKou']
House_Prices = [44750, 48847, 22428, 18900, 12332,
                11423, 16833, 20874, 6870, 6903]
Up_Rate = [31.57, 32.09, 28.95, 2.86, 24,
           16.59, 18.78, 4.77, -2.4, -1.26]
Avg_Salary = [8962, 9240, 6680, 7330, 6331,
              6067, 6522, 7409, 6584, 5827]
pd=pd.DataFrame({'Avg Housing Price':House_Prices,'Up Rate':Up_Rate,'Avg Salary':Avg_Salary},index=citys)
print pd
# 1).数据排个序,取前三名
# 上面的数据并没有排序,我们分别按照房价的高低,涨幅的高低和薪资的高度排个序
#最高房价前3名
print pd.sort_values(by='Avg Housing Price',ascending=False)[:3]
#涨幅最大前3名
print pd.sort_values(by='Up Rate',ascending=False).head()
#平均工资最高前3名
print pd.sort_values(by='Up Rate',ascending=False)[:3]
#有没有哪个城市的房价是跌的
print pd[pd['Up Rate']<0]
#十大城市平均房价,平均工资
print pd.mean()

运行结果:

"D:\Program Files\Python27\python.exe" D:/PycharmProjects/learn2017/wordcloud.py
   names  scores
0    Leo     100
1   Jack      90
2  James      80
       Scores
Leo       100
Jack       90
James      80
       Ages  Scores
Leo      20     100
Jack     23      90
James    25      80
   0  1  2
0  0  1  2
1  3  4  5
2  6  7  8
      col1  col2  col3
row1     0     1     2
row2     3     4     5
row3     6     7     8
       col1  col2  col3
count   3.0   3.0   3.0
mean    3.0   4.0   5.0
std     3.0   3.0   3.0
min     0.0   1.0   2.0
25%     1.5   2.5   3.5
50%     3.0   4.0   5.0
75%     4.5   5.5   6.5
max     6.0   7.0   8.0
   Name  Scores Sex
0   Leo     100   M
1  Jack      90   M
2  Lili      80   W
0     Leo
1    Jack
2    Lili
Name: Name, dtype: objectName      Leo
Scores    100
Sex         M
Name: 0, dtype: object
   Name  Scores Sex
0   Leo     100   M
1  Jack      90   M
   Name Sex
0   Leo   M
1  Jack   M
2  Lili   W
   Name  Scores
0   Leo     100
1  Jack      90
   Name  Scores Sex
0   Leo     100   M
1  Jack     100   M
2  Lili     100   W
   Name  Scores Sex    hobby
0   Leo     100   M    music
1  Jack     100   M    movie
2  Lili     100   W  singing
   Name  Scores Sex    hobby
0   Leo     100   M    music
1  Jack     100   M    movie
2  Lili     100   W  singing
   Name  Scores Sex    hobby
0   Leo     100   M    music
1  Jack     100   M    movie
2  Lili     100   W  singing
   Name  Scores Sex    hobby
2  Lili     100   W  singing
           Avg Housing Price  Avg Salary  Up Rate
ShangHai               44750        8962    31.57
BeiJing                48847        9240    32.09
NanJing                22428        6680    28.95
HangZhou               18900        7330     2.86
WuHan                  12332        6331    24.00
JiNan                  11423        6067    16.59
FuZhou                 16833        6522    18.78
GuangZhou              20874        7409     4.77
ChongQing               6870        6584    -2.40
HaiKou                  6903        5827    -1.26
          Avg Housing Price  Avg Salary  Up Rate
BeiJing               48847        9240    32.09
ShangHai              44750        8962    31.57
NanJing               22428        6680    28.95
          Avg Housing Price  Avg Salary  Up Rate
BeiJing               48847        9240    32.09
ShangHai              44750        8962    31.57
NanJing               22428        6680    28.95
WuHan                 12332        6331    24.00
FuZhou                16833        6522    18.78
          Avg Housing Price  Avg Salary  Up Rate
BeiJing               48847        9240    32.09
ShangHai              44750        8962    31.57
NanJing               22428        6680    28.95
           Avg Housing Price  Avg Salary  Up Rate
ChongQing               6870        6584    -2.40
HaiKou                  6903        5827    -1.26
Avg Housing Price    21016.000
Avg Salary            7095.200
Up Rate                 15.595
dtype: float64

Process finished with exit code 0

               

标签:函数,students,DataFrame,Leo,print,100,Avg,Pandas,Name
来源: https://blog.51cto.com/u_14540820/2759318

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有