本篇文章是由kaggle网站上的pandas教程整理得到,学习过程中走一遍教程中的例程真的帮助很大。在这里将教程中所涉及的操作整理如下,便于后续查找使用。
Series和DataFrame是Pandas中最常用的两个对象。
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文件
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]
iloc
和loc
区别:
对于0:10
,iloc
表示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)]
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')
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()
进行排序
包含两个参数by
和ascending
,by表示参考排序的列,传入的元素可以是一个list,list第一个元素表示主参考列,第二个元素表示第二参考列,当主参考列的元素相同时,才比较第二参考列的元素,ascending表示升序
sorted_varieties = price_extremes.sort_values(by=['min', 'max'], ascending=False)
mean()
求均值操作
dtype
是DataFrame或Series
类型数据的属性,可直接访问
astype()
函数执行数据类型转换,函数的传入变量为目标数据类型,如str
为string类型
isnull()
判断DataFrame中是否包含缺失元素,返回结果为对应于DataFrame元素相应位置的True或者False。两种使用形式
reviews.price.isnull()
pd.isnull(reviews.price)
fillna()
对缺失数据进行填充,函数的传入变量为填充数据,如0,‘unknown’
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"))