This is a short introduction to pandas, geared mainly for new users。
Customarily,we import as follows:
In [1]: import numpy as np
In [2]: import pandas as pd
Object creation
Creating a Series by passing a list of values, letting pandas create a default integer index
s = pd.Series([1, 3, 5, np.nan, 6, 8])
Creating a DataFrame by passing a NumPy array, with a datetime index and labeled columns
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
index
columns
Creating a DataFrame by passing a dict of objects that can be converted to series-like.
Viewing data
Here is how to view the top and bottom rows of the frame:
df.head()
df.tail(3)
df.index
df.columns
df.describe()
df.T
Sorting by an axis
df.sort_index(axis=1, ascending=False)
df.sort_values(by='B')
Selection
While standard Python / Numpy expressions for selecting and setting are intuitive 直观的 and come in handy for interactive 互动的 work, for production code, we recommend the optimized pandas data access methods, .at, .iat, .loc and .iloc.
Getting
Selecting a single column, which yields a Series, equivalent 等效的 to df.A:df['A']
Selecting via [], which slices the rows. 切片
df[0:3]
df['20130102':'20130104']
Selection by label
df.loc[dates[0]]
df.loc[:, ['A', 'B']]
df.loc['20130102':'20130104', ['A', 'B']]
df.loc['20130102', ['A', 'B']]
df.loc[dates[0], 'A']
df.at[dates[0], 'A']
Selection by position
df.iloc[3]
df.iloc[3:5, 0:2]
df.iloc[[1, 2, 4], [0, 2]]
df.iloc[1:3, :]
df.iloc[:, 1:3]
df.iloc[1, 1]
df.iat[1, 1]
Boolean indexing
df[df['A'] > 0]
df[df > 0]
df2[df2['E'].isin(['two', 'four'])]
Setting
Setting a new column automatically aligns the data by the indexes.
Setting values by label:
Setting values by position:
Setting by assigning with a NumPy array:
Missing data
pandas primarily uses the value np.nan to represent missing data. It is by default not included in computations
Reindexing allows you to change/add/delete the index on a specified axis. This returns a copy of the data.
To drop any rows that have missing data.
df1.dropna(how='any')
Filling missing data.
df1.fillna(value=5)
To get the boolean mask where values are nan.
pd.isna(df1)
Operations
Stats
Operations in general exclude missing data.
df.mean()
Apply
df.apply(np.cumsum)
df.apply(lambda x: x.max() - x.min())
Histogramming
s.value_counts()
String Methods
s.str.lower()
Merge
Concatenating pandas objects together with concat()
pd.concat(df1,df2)
pd.merge(left, right, on='key')
Grouping
By“group by” we are referring to a process involving one or more of the followingsteps:
Splitting the data into groups based on some criteria
Applying a function to each group independently
Combining the results into a data structure
df.groupby('A').sum()
df.groupby(['A', 'B']).sum()
Reshaping
The stack() method “compresses” a level in the DataFrame’s columns.
With a “stacked” DataFrame or Series (having a MultiIndex as the index), the inverse operation of stack() is unstack(), which by default unstacks the last level
stacked.unstack()
stacked.unstack(1)
Pivot tables
pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])
Time series
rng = pd.date_range('1/1/2012', periods=100, freq='S')
ts_utc = ts.tz_localize('UTC')
rng = pd.date_range('1/1/2012', periods=5, freq='M')
ps = ts.to_period()
ps.to_timestamp()
Categoricals
df["grade"]=df["raw_grade"].astype("category")
df.groupby("grade").size()
Plotting
We use the standard convention for referencing the matplotlib API
import matplotlib.pyplot as plt
plt.close('all')
On a DataFrame, the plot() method is a convenience to plot all of the columns with labels
plt.figure()
df.plot()
Getting data in/out
CSV
Writing to a csv file.
df.to_csv('foo.csv')
Reading from a csv file.
pd.read_csv('foo.csv')
HDF5
df.to_hdf('foo.h5', 'df')
pd.read_hdf('foo.h5', 'df')
Excel
df.to_excel('foo.xlsx', sheet_name='Sheet1')
pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']
10 minutes to pandas
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Features PremiereIn the last section, we exposed you to t...
- 转载请在文章起始处注明出处,谢谢。 jupyter notebook 保存的md文件用markdownpad打开后...