Python之pandas使用简介
2018/04/15 看到一个博主写得很全,大家也可以看看
转:https://blog.****.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)
'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'})