Python之pandas使用简介

2018/04/15  看到一个博主写得很全,大家也可以看看

转:https://blog.csdn.net/u011089523/article/details/60349591


其实我主要也是为了加强自己的记忆,多多练习,有小伙伴也可以多多交流,最近在学机器学习= =要学得到东西是真的多

在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame。Series类似于numpy中的一维数组,除了通吃一维数组可用的函数或方法,而且其可通过索引标签的方式获取数据,还具有索引的自动对齐功能;DataFrame类似于numpy中的二维数组,同样可以通用numpy数组的函数和方法,而且还具有其他灵活应用,后续会介绍到。


导入包

进入命令行,敲命令pip install pandas


创建pandas的数据结构

1、Series的创建

1)通过一维数组创建序列

pd.Series(数组)

2)通过字典的方式创建序列

pd.Series(字典)


2、DataFrame的创建

1)通过二维数组创建数据框

pd.DataFrame(数组)

以下以两种字典来创建数据框,一个是字典列表,一个是嵌套字典。

dic2 = {'a':[1,2,3,4],'b':[5,6,7,8],
'c':[9,10,11,12],'d':[13,14,15,16]}

df2 = pd.DataFrame(dic2)


dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},
'two':{'a':5,'b':6,'c':7,'d':8},
'three':{'a':9,'b':10,'c':11,'d':12}}

 pd.DataFrame(dic3)


3)通过DtatFrame的方式创建数据框

df4 = df3[['one','three']]

s3 = df3['one']


查看索引  :df.index

查看列标签:df.columns


删除行索引重排:
ser.reset_index(drop = True)
df.reset_index(drop = True)
------------------------------------------
直接修列索引:
df = pd.DataFrame(df,columns = ['One','Two','Three'])



方法用法:

import pandas as pd

1、读取/保存为csv文件

df=pd.read_csv('cancer_data.csv')

df=pd.read_csv('cancer_data.csv',sep='分割号')     如果从csv读取的数据全部融合在一起,你需要用sep分隔

tips:如果是同样在当前的目录下,可以直接输入你的文件名,一般建议输入绝对路劲,我这个是因为使用了jupyter,所以直接放在当前目录下


pd.to_csv('cancer_data.csv')

获取行列数

列数    df.columns.size

行数    df.iloc[:,0].size


df.ix[[0]].values[0][0]#第一行第一列的值 
df.ix[[1]].values[0][1]#第二行第二列的值 


2、展示读取的文件(不填写展示前面五行)

df.head(20)       ——展示20行


3、以数组形式返回标签

df.columns

tips:for i,v in enumerate(df.columns):    这样可以更直观看标签

返回数据框维度的元组(行数、列数)

df.shape()


4、返回列的数据类型

tips:字符串在pandas中是以对象(Object)的方式存在

df.dtypes()


5、显示数据框的简明摘要,包括每列非空值的数量

df.info()

下列展示结果:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 569 entries, 0 to 568
Data columns (total 32 columns):
id                        569 non-null int64
diagnosis                 569 non-null object
radius_mean               569 non-null float64
texture_mean              548 non-null float64
perimeter_mean            569 non-null float64
area_mean                 569 non-null float64
smoothness_mean           521 non-null float64
compactness_mean          569 non-null float64
concavity_mean            569 non-null float64
concave_points_mean       569 non-null float64
symmetry_mean             504 non-null float64
fractal_dimension_mean    569 non-null float64
radius_SE                 569 non-null float64
texture_SE                548 non-null float64
perimeter_SE              569 non-null float64
area_SE                   569 non-null float64
smoothness_SE             521 non-null float64
compactness_SE            569 non-null float64
concavity_SE              569 non-null float64
concave_points_SE         569 non-null float64
symmetry_SE               504 non-null float64
fractal_dimension_SE      569 non-null float64
radius_max                569 non-null float64
texture_max               548 non-null float64
perimeter_max             569 non-null float64
area_max                  569 non-null float64
smoothness_max            521 non-null float64
compactness_max           569 non-null float64
concavity_max             569 non-null float64
concave_points_max        569 non-null float64
symmetry_max              504 non-null float64
fractal_dimension_max     569 non-null float64
dtypes: float64(30), int64(1), object(1)
memory usage: 142.3+ KB


6、返回每列数据的有效描述性统计(总数,均值,均差,最小——百分比位置——最大)

df.describe()



7、可以使用 loc 和 iloc 选择哪一行哪一列的数据

选择从 'id' 到最后一个均值列的所有列
df_means = df.loc[:,'id':'fractal_dimension_mean']

df_means.head()

用索引号重复以上步骤,所有行,0到10列,相当于【0:11)
df_means = df.iloc[:,:11]

df_means.head()

tips:如果想有跳转的查看

df_means = df.iloc[ [0:3,8,15] , [1,5:11] ]


8、查看哪一个位置是NaN,返回二维数组,如果是NaN则是True,否则为false

df.isnull()

想看哪一列有NaN

df.isnull().any()


9、查找数据的唯一值,返回一串唯一的数据数组

unique()


10、# 返回每列数据的有效描述性统计,先提取列,再调用describe()

df['header'].describe()

查看单列的数据,每一个唯一数据出现的次数

df['header'].value_counts()

小技巧:df['header'].value_counts().index   这样可以获取这一列的所有的唯一值,用来作为你画直方图得到时候的标签


11、查看数据行是否是重复的,冗余,返回一个队列,True表示有重复的

df.duplicated()

取出掉重复的数据

df.drop_duplicates(inplace=True)

根据某行的一个,只判断一个标签是否是重复的


12、发现有数据是空的,要根据实际情况,比如我们去他们的平均值填充进空值

mean=df['view_duration'].mean()

df[''view_duration].fillna(mean,inplace=True)     inplace表示会实际修改数据并保存,默认为false


13、两个dataframe拼接

df1.appened(df2)


14、修改列标签

old_lables = list(df.columns)

old_lables[index]='new_lable'     #替换某个标签

df.columns = old_lables     

df.columns = new_lables    #全部重新替换

#利用自带的方法rename

df=df.rename(columns={'old_name':'new_name'})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值