九道门丨pandas的使用技巧整理

Pandas是一个很棒的python库,它为我们提供了操作和分析数据的机会。在本文中,我想谈谈大多数数据分析师或数据科学家在日常工作中每天使用的一些有用的pandas方法。数据分析优质社群,等你加入哦~

为了便于理解,我把这些方法分为了3个部分:

a. 数据理解

b. 数据清理

c. 数据分析与操作

数据理解

1. read_csv()

df = pd.read_csv('..\data\marketing_campaign.csv' , sep=',' )

pd.read_csv 方法可以帮助我们读取数据集。如果我们的数据集除了逗号','之外有不同的分隔符,例如制表符或分号,我们就可以更改sep参数sep = ' '或sep = ' ; '。使用pd.read_excel 和 pd.read_json 分别读取 xlsx 和 json。

2. head()

df.head()  ## Returns first 5 rows
九道门丨pandas的使用技巧整理

3. tail()

df.tail()  ## Returns last 5 rows of the dataset
九道门丨pandas的使用技巧整理

4. info()

df.info() 方法提供了列总数、行数、列名,每列中的变量数(非空值)、数据类型。因此,我们可以很容易地回答以下问题:

  1. 是否有缺失值?
  2. 数据类型是否有问题?
九道门丨pandas的使用技巧整理

  • 34 名客户没有其收入信息
  • Dt_Customer 应为日期时间数据类型。

5. describe()

df.describe() 方法默认返回数值数据的统计摘要。它包括计数、平均值、标准差、最小第一分位数、第二分位数(中位数)、第三分位数和最大值。

九道门丨pandas的使用技巧整理

我们还可以使用 include 参数来包含其他列。

include = ' all ' 另外返回 unique, top, freq 的特征

unique = 每列中有多少个唯一值

top = 每列中哪个类出现最多

freq = 最频繁出现的类的频率。

九道门丨pandas的使用技巧整理

df.describe(include = 'all')

6. isnull()

info 方法提供了许多有用的信息,包括非空值。如果我们只想查看数据集中的空值怎么办?

df.isnull().sum() 方法返回空值。

九道门丨pandas的使用技巧整理

7. duplicated()

duplicated() 方法负责查找数据集中的重复行。如果行重复,则返回 False 或 True。

df[df.duplicated(keep=False)]  

keep 参数有 3 个选项:first、last 和 false。

first:保留第一行

last:保留最后一个

false:返回所有重复的行

九道门丨pandas的使用技巧整理

数据清理

在分析数据之前,我们需要清理数据以进行准确的分析。

现在数据存在的问题有:

  1. Income变量中缺少了一些值
  2. Dt_Customer列的格式也是错误的
  3. 重复的行

让我们看看如何用 pandas 来解决这些问题。

8. dropna()

df.dropna(inplace=True)
  • dropna() 方法删除数据集中的所有行。
  • inplace 参数提供了是否永久删除 null 值的选项。

注意:如果没有 inplace 参数,我们也可以赋值一个变量来创建新的数据帧,例如df1 = df.dropna()

mean = df.Income.mean() # average of Income
df['Income'].fillna(mean,inplace=True)

9. fillna()

fillna() 方法填充所需的空值。对于数值列,我们可以使用平均值或中位数,对于分类值,我们可以使用最常用的值(众数)来插补值。

10. drop_duplicates()

默认情况下,drop_duplicates 方法会根据所有列删除重复的行。

df.drop_duplicates(inplace=True) # inplace = True means we removed permanently.

11. to_datetime()

to_datetime() 函数的作用是将对象转换为日期时间格式。

df['Dt_Customer'] =  pd.to_datetime(df['Dt_Customer'])

如果我们想创建一个名为年,月或日的新列,我们还可以使用以下函数。

df['year_Customer'] =  df['Dt_Customer'].dt.year
df['month_Customer'] = df['Dt_Customer'].dt.month ## month of the customers
df['day_Customer'] = df['Dt_Customer'].dt.dayofweek ## dayofweek as a number 0 = Monday  6 = Sunday
df['Dt_Customer'].dt.strftime('%A') # This shows full weekday name

数据分析和操作

12. value_counts()

df['Education'].value_counts()
九道门丨pandas的使用技巧整理

13. unique()

df['Education'].unique()
九道门丨pandas的使用技巧整理

14. nunique()

df['Education'].nunique()   Output = 5

15. sort_values()

如果我们想按收入对客户进行排序,则可以使用sort_values。此方法允许我们按任意列和任意顺序对数据帧进行排序,即升序或降序。

df.sort_values(by='Income', ascending=False)

16. query()

query() 方法允许按我们想要的条件过滤掉数据帧。

假设我们只想看到收入高于10万的客户。

df.query('Income > 100000') 

替代方式:

df[df['Income'] > 100000]

17. groupby()

group by method 通过拆分对象来聚合我们的值。

df.groupby('Education')['Income'].mean()
九道门丨pandas的使用技巧整理

替代方式:

df.groupby('Education').agg({'Income' : 'mean'})

18. pivot_table()

pivot_table() 方法可以帮助我们创建有用的数据透视表。

我们需要使用4个参数作为输入:数据、索引、列和值。

默认情况下,该方法使用均值作为聚合函数。

pd.pivot_table(data = df, values= 'Income', index = 'Education', columns = 'Marital_Status')
九道门丨pandas的使用技巧整理

19. apply()

apply方法使我们能够使用内部的任何函数。我们可以轻松地使用appliance方法进行任何计算。

假设我们要将数字转换为客户响应中的“已接受”和“未接受”字符串。

df['Response'].apply(lambda x : 'Accepted' if x == 1 else 'Not Accepted' )

20. replace()

df['Marital_Status'].replace(to_replace=['Alone','Divorced','Widow','YOLO','Absurd'], value='Single')

(需要数据集的可以在评论区留言或者后台私信我们)

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章