pandas基本操作整理

pandas学习笔记

本篇文章是由kaggle网站上的pandas教程整理得到,学习过程中走一遍教程中的例程真的帮助很大。在这里将教程中所涉及的操作整理如下,便于后续查找使用。

Series和DataFrame是Pandas中最常用的两个对象。

1.创建,读取和写入工作簿

read_csv()从csv文件读取数据,describe()获得dataFrame数据的基本信息,如元素个数count,均值mean,中位数50%,例:

# save filepath to variable for easier access
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
# read the data and store data in DataFrame titled melbourne_data
melbourne_data = pd.read_csv(melbourne_file_path) 
# print a summary of the data in Melbourne data
melbourne_data.describe()
Rooms Price Distance Postcode
count 13580.000000 1.358000e+04 13580.000000 13580.000000
mean 2.937997 1.075684e+06 10.137776 3105.301915
std 0.955748 6.393107e+05 5.868725 90.676964
min 1.000000 8.500000e+04 0.000000 3000.000000
25% 2.000000 6.500000e+05 6.100000 3044.000000
50% 3.000000 9.030000e+05 9.200000 3084.000000
75% 3.000000 1.330000e+06 13.000000 3148.000000
max 10.000000 9.000000e+06 48.100000 3977.000000

pd.DataFrame创建一个DataFrame

fruit_sales = pd.DataFrame({"Apples":[35,41] , "Bananas":[21,34]},index = ["2017 Sales", "2018 Sales"])
Apples Bananas
2017 Sales 35 21
2018 Sales 41 34

pd.Series创建一个Series

quantities = ["4 cups","1 cup","2 large","1 can"]
items = ["Flour","Milk","Eggs","Spam"]
ingredients = pd.Series(quantities, index = items , name = "Dinner",dtype = object)

to_csv将DataFrame保存为csv文件

2. 索引,选择和分配

iloc[ ]访问DataFrame某行元素,例

first_row = reviews.iloc[0]
sample_reviews = reviews.iloc[[1,2,3,5,8]]

loc[]访问DataFrame中的制定行和列,例

cols = ['country','province','region_1','region_2']
indices = [0,1,10,100]
df = reviews.loc[indices,cols]

ilocloc区别:

对于0:10iloc表示0,1,...9,而loc表示0,1...,10

访问某一列中指定元素

italian_wines = reviews.loc[reviews.country=='Italy']

top_oceania_wines = reviews.loc[(reviews.country.isin(['Australia','New Zealand']))&(reviews.points>=95)]

3. 统计函数

median()计算中位数

unique()统计所含元素的具体值

value_counts统计元素出现次数

mean()求均值,例

#0均值处理
centered_price = reviews.price-reviews.price.mean()

idxmax()获取最大的元素的index

apply()在dataFrame上执行预先定义好的操作,例

def stars(row):
    if row.country == 'Canada':
        return 3
    elif row.points >= 95:
        return 3
    elif row.points >= 85:
        return 2
    else:
        return 1
    
star_ratings = reviews.apply(stars, axis = 'columns')

4. 分组和排序

groupby统计DataFrame中出现的元素,并创建一个Series,使用时需和size()count()结合,例

reviews_written = reviews.groupby('taster_twitter_handle').size()

reviews_written = reviews.groupby('taster_twitter_handle').taster_twitter_handle.count()

groupby还可以统计DataFrame成对出现的元素,列

#统计了country列和variety列中成对出现的元素
country_variety_counts = reviews.groupby(['country','variety']).size().sort_values(ascending = False)

agg()对列的聚合操作,例

price_extremes = reviews.groupby('variety').price.agg([min,max])

sort_values()进行排序

包含两个参数byascending,by表示参考排序的列,传入的元素可以是一个list,list第一个元素表示主参考列,第二个元素表示第二参考列,当主参考列的元素相同时,才比较第二参考列的元素,ascending表示升序

sorted_varieties = price_extremes.sort_values(by=['min', 'max'], ascending=False)

mean()求均值操作

5. 数据类型和丢失数据处理

dtype是DataFrame或Series类型数据的属性,可直接访问

astype()函数执行数据类型转换,函数的传入变量为目标数据类型,如str为string类型

isnull()判断DataFrame中是否包含缺失元素,返回结果为对应于DataFrame元素相应位置的True或者False。两种使用形式

reviews.price.isnull()
pd.isnull(reviews.price)

fillna()对缺失数据进行填充,函数的传入变量为填充数据,如0,‘unknown’

6. 重命名和合并工作簿

rename()可以进行列的重命名操作,例

#将reviews复制给renamed,并将其中两列重命
renamed = reviews.rename(columns = dict(region_1='region',region_2='locale'))

rename_axis将index重新命名,例

reindexed = reviews.rename_axis('wines',axis = 'rows')

concat()将两个DataFrame按行合并在一起,例

combined_products = pd.concat([gaming_products,movie_products])

join()将两个DataFrame按列合并在一起,需要注意的是两个DataFrame的index必须要相同,可以配合set_index指定index进行合并

#将powerlifting_meets和powerlifting_competitors按行合并在一起,设置了index为"MeetID"
powerlifting_combined = powerlifting_meets.set_index("MeetID").join(powerlifting_competitors.set_index("MeetID"))

你可能感兴趣的:(数据挖掘)