Python基础——pandas常用函数

大神博客:https://blog.csdn.net/luanpeng825485697/article/details/80533003

1、Series()   

一个series是一个一维的数据类型,其中每一个元素都有一个标签。类似于Numpy中元素带标签的数组。其中,标签可以是数字或者字符串。

如:

import pandas as pd

s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])  
#创建一个序列s,每个Series都会带有一个对应的index,用来标记不同的元素,index的内容可以是数字,也可以是字母,中文等
print(s)

输出结果: 

 

2、DataFrame()   

 数据表格,类似一张二维的表格,它的每一列都是一个Series,是pandas的基本数据结构 

import pandas as pd

d = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c'])
#创建一个表
print(d)

 输出结果:

也可以用已有的序列来创建表格

import pandas as pd

s = pd.Series([1, 2, 3], index=['a', 'b', 'c']) 
d2 = pd.DataFrame(s)  #也可以用已有的序列来创建表格
print(d2)

输出结果:

3、DataFrame.iloc[start,stop,interval]    取表中的行 

import pandas as pd
import xlrd

filename = 'E:/data/chapter5/demo/data/bankloan.xls' #文件路径

data = pd.read_excel(filename) #读取文件

print(data.iloc[0])    #取第一行数据
print(data.iloc[0:8])    #取0-7行数据
print(data.iloc[0:8:2])  #取第0,2,4,6行数据(行间隔为2)
print(data.iloc[:,:8])    #表示取8列数据,该表一供有9列
print(data.iloc[:,8])    #表示取第9列的数据(列从0开始计数)

 4、DataFrame.as_matrix()    将表格转换位其编号数组表示

import pandas as pd
import xlrd

filename = 'E:/data/chapter5/demo/data/bankloan.xls' #文件路径

data = pd.read_excel(filename) #读取文件

x = data.iloc[0:8:2].as_matrix()
print(x)

5、修改Excel表格列名

import pandas as pd
import numpy as np
import xlwt
import xlrd

filename = filename = 'E:/data/chapter5/demo/data/sales_data.xls' #文件路径
output_filename = 'E:/data/chapter5/demo/data/sales_data_upgrate.xls' #输出文件路径

data = pd.read_excel(filename) #读取文件

#data_1 = data.drop('序号', 1) #删除列名为'序号'的那一列

#复制sales_data.xls表中的数据,建立新的excel表,新表各列列名分别为['weather', 'weekend', 'promotion', 'Sales_Volume']
data_2 =pd.DataFrame(data.iloc[:,:].as_matrix(), columns=['weather', 'weekend', 'promotion', 'Sales_Volume'])  
print(pd.DataFrame(data_2).to_excel(output_filename)) #建立新表

5、常见基础操作

import pandas as pd
from pandas import Series, DataFrame

sdata1 = {'name':['a', 'b', 'c'], 'rank':[1, 2, 3], 'score':[99, 87, 45]}
data1 = DataFrame(sdata1)
print(data1)
print(data1.columns) # 输出data1列索引

data2 = DataFrame(sdata1,columns=['score','name','rank'])
print(data2)

data3 = DataFrame(sdata1,columns=['score','name','rank','class'],index=['1','2','3']) #index行索引
print(data3)
data5 = data3.reindex(['1','2','3','4'],fill_value=0) # 重置行索引,输出结果是索引变化后的结果,data3索引没有发生变化,这一步可以为数据增加行,fill_value间空数据填充0
print(data5)
data6 = data3.reindex(['1','2','3','4'],method = 'ffill') # ffill向前填充,bfill向后填充

print(data3['score']) # 返回列索引名为score的那一列数据
print(data3.ix['1'])

data4 = data2[data2['score']>60] # 内层返回为布尔值True, False,外层返回条件为真的数据
print(data4)

del data3['class'] # 删除data3的class列
print(data3)

6、删除指定行、列数据

import pandas as pd
from pandas import Series, DataFrame

sdata1 = {'name':['a', 'b', 'c'], 'rank':[1, 2, 3], 'score':[99, 87, 45]}
data1 = DataFrame(sdata1,index=['1','2','3'])
print(data1)

data2 = data1.drop('1') #删除索引为'1'的那一行数据
print(data2)

data3 = data1.drop('score',axis=1) # 删除列索引为score的那一列数据,axis=0按行,axis=1按列
print(data3)

7、读入、查看数据

import pandas as pd
from pandas import Series, DataFrame

filename = 'tips.csv'
data = pd.read_csv(filename)
#data = pd.read_table(filename, sep=',') #csv是以','分隔的数据
print(data)
print(data.head()) #默认输出前5行数据
print(data.tail()) #默认输出后5行数据
print(data.dtypes) #输出各列数据类型
print(data.describe()) #给出数据类型为数值型的各列数据计数、均值、标准差、最小值、1/4,1/2,3/4分位数、最大值

9、数据清洗—DataFrame中的空值处理

大神博客链接:https://blog.csdn.net/yuanxiang01/article/details/78738812

10、Pandas作图

import pandas as pd
from pandas import Series, DataFrame
from numpy import nan as NaN
import numpy as np
import matplotlib.pyplot as plt

filename = 'tips.csv'
data = pd.read_csv(filename)
print(data)
count = pd.crosstab(data.sex, data.day)
print(count)
count.T.plot(kind='bar') # kind='bar'柱状图,T将表行列转置
plt.show()

data['data_pct'] = data['tip']/data['total_bill'] # 在data数据表中增加一列,列索引为:data_pct,数据为公式所求
print(data.head())
data['data_pct'].hist(bins=40) # 横坐标是data_pct的值,纵坐标是频率,bins=n是将数据从最大值到最小值分成n个条
plt.show()

11、DataFrame索引总结

loc、iloc、ix对于列的索引跟对行的索引是一样的,loc只能通过选取列标签索引数据,iloc只能通过选取列位置编号索引数据,ix 既可以通过行标签索引数据,也可以通过行位置编号索引数据,还可以两者混用,爱无止境。

区别不在于用哪种方法,而是通过标签索引将会将切片末端包含进去,通过位置编号索引不会将切片末端包含进去。同样的都是第一行到第四行,通过loc就会把1,2,3,4行都提取出来,通过iloc就只能把1,2,3行提取出来。ix方法也是一样,只是方法不同而已。

大神博客:https://blog.csdn.net/qq_35318838/article/details/80271869

                    https://blog.csdn.net/wr339988/article/details/65446138

import pandas as pd
from pandas import Series, DataFrame
from numpy import nan as NaN
import numpy as np
import matplotlib.pyplot as plt

filename = 'tips.csv'
data = pd.read_csv(filename)
# print(data.dtypes)

print(data['sex']) # 输出表格索引为'sex'的那一列数据
print(data[0:3]) # 输出第0、1、2行数据,注意:第三行数据补输出
print(data.at[1,'sex']) # 输出行索引为1,列索引为'sex'的数据,注意:.at只能选择某一个数据
print(data.iat[4,4]) # 注意:.at只能选择某一个数据
print(data.loc[0:4,['sex','size']]) # 输出列索引为'sex','size'的所有数据,注意:.loc[]选择数据和[]选择数据不同,.loc[]会包含最后一个数字行/列的数据;loc只能通过选取行标签索引数据,如果用到了行(列)的位置索引就会报错
print(data.iloc[0,2]) # 输出行索引位置为0,列索引位置为2的数据,注意:行列数据起始索引均为0
print(data.iloc[0:4,1:2]) # 输出行索引位置为0、1、2、3、4,列索引位置为2,3的数据

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值