再见了,Python:一段难忘的编程岁月

发表时间: 2024-09-03 09:04

这几天,很多同学问到,关于Python数据分析方面的操作。

用起来头疼,需要不断的查询。所以,今天给大家总结了100个最最核心的操作。

如果再遇到问题,这里直接查看,超级方便,基本日常使用的都有了~

需要本文PDF的同学,文末获取~

每个操作都包含介绍、语法和案例。这些操作涉及数据导入、数据清理、数据分析、数据可视化机器学习等方面。

其中涉及到的data.csv,给出一个示例数据,大部分可用~

date,region,product,sales,quantity,discount,customer_type2024-01-01,North,Widget A,1000,10,5%,Retail2024-01-01,South,Widget B,1500,15,10%,Wholesale2024-01-02,North,Widget A,1100,11,5%,Retail2024-01-02,South,Widget B,1600,16,10%,Wholesale

1. 导入常用库

导入必要的库,如NumPy、Pandas和Matplotlib等,是进行数据分析的基础。

语法

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns

2. 读取CSV文件

读取CSV文件并将其转换为Pandas DataFrame。

语法

df = pd.read_csv('filename.csv')

案例

df = pd.read_csv('data.csv')print(df.head())

3. 读取Excel文件

读取Excel文件并将其转换为Pandas DataFrame。

语法

df = pd.read_excel('filename.xlsx')

案例

df = pd.read_excel('data.xlsx')print(df.head())

4. 读取JSON文件

读取JSON文件并将其转换为Pandas DataFrame。

语法

df = pd.read_json('filename.json')

案例

df = pd.read_json('data.json')print(df.head())

5. 查看数据的基本信息

查看DataFrame的基本信息,如行数、列数和数据类型等。

语法

df.info()

案例

df = pd.read_csv('data.csv')df.info()

6. 查看数据的统计信息

查看DataFrame的统计信息,如均值、标准差和分位数等。

语法

df.describe()

案例

df = pd.read_csv('data.csv')print(df.describe())

7. 检查缺失值

检查DataFrame中缺失值的情况。

语法

df.isnull().sum()

案例

df = pd.read_csv('data.csv')print(df.isnull().sum())

8. 删除缺失值

删除DataFrame中包含缺失值的行或列。

语法

df.dropna(axis=0, inplace=True)

案例

df = pd.read_csv('data.csv')df.dropna(axis=0, inplace=True)print(df.info())

9. 填充缺失值

用指定的值填充DataFrame中的缺失值。

语法

df.fillna(value, inplace=True)

案例

df = pd.read_csv('data.csv')df.fillna(0, inplace=True)print(df.head())

10. 数据类型转换

将DataFrame中的列转换为指定的数据类型。

语法

df['column'] = df['column'].astype(dtype)

案例

df = pd.read_csv('data.csv')df['date'] = pd.to_datetime(df['date'])print(df.info())

11. 选择列

选择DataFrame中的特定列。

语法

df['column']df[['col1', 'col2']]

案例

df = pd.read_csv('data.csv')print(df['column1'].head())print(df[['column1', 'column2']].head())

12. 条件筛选

根据条件筛选DataFrame中的行。

语法

df[df['column'] > value]

案例

df = pd.read_csv('data.csv')filtered_df = df[df['age'] > 30]print(filtered_df.head())

13. 排序

对DataFrame按指定列排序。

语法

df.sort_values(by='column', ascending=True)

案例

df = pd.read_csv('data.csv')sorted_df = df.sort_values(by='age', ascending=False)print(sorted_df.head())

14. 重命名列

重命名DataFrame的列名。

语法

df.rename(columns={'old_name': 'new_name'}, inplace=True)

案例

df = pd.read_csv('data.csv')df.rename(columns={'old_name': 'new_name'}, inplace=True)print(df.head())

15. 删除列

删除DataFrame中的指定列。

语法

df.drop(columns=['col1', 'col2'], inplace=True)

案例

df = pd.read_csv('data.csv')df.drop(columns=['column1', 'column2'], inplace=True)print(df.head())

16. 分组计算

对DataFrame按指定列分组并进行聚合计算。

语法

df.groupby('column').agg({'col1': 'mean', 'col2': 'sum'})

案例

df = pd.read_csv('data.csv')grouped_df = df.groupby('department').agg({'salary': 'mean', 'bonus': 'sum'})print(grouped_df)

17. 数据透视表

创建数据透视表,用于数据汇总和分析。

语法

df.pivot_table(values='col', index='row', columns='column', aggfunc='mean')

案例

df = pd.read_csv('data.csv')pivot_table = df.pivot_table(values='sales', index='region', columns='product', aggfunc='sum')print(pivot_table)

18. 合并DataFrame

合并两个DataFrame。

语法

pd.merge(df1, df2, on='key')

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')merged_df = pd.merge(df1, df2, on='id')print(merged_df.head())

19. 拼接DataFrame

将多个DataFrame沿指定轴拼接。

语法

pd.concat([df1, df2], axis=0)

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')concat_df = pd.concat([df1, df2], axis=0)print(concat_df.head())

20. 删除重复值

删除DataFrame中的重复行。

语法

df.drop_duplicates(inplace=True)

案例

df = pd.read_csv('data.csv')df.drop_duplicates(inplace=True)print(df.info())

21. 计算相关系数

计算DataFrame中各列之间的相关系数。

语法

df.corr()

案例

df = pd.read_csv('data.csv')correlation_matrix = df.corr()print(correlation_matrix)

22. 创建透视图

创建透视图,用于数据汇总和分析。

语法

pd.pivot_table(df, values='column', index='rows', columns='cols', aggfunc='mean')

案例

df = pd.read_csv('data.csv')pivot_table = pd.pivot_table(df, values='sales', index='region', columns='product', aggfunc='sum')print(pivot_table)

23. 数据可视化-散点图

使用Matplotlib或Seaborn绘制散点图。

语法

plt.scatter(df['x'], df['y'])

案例

df = pd.read_csv('data.csv')plt.scatter(df['height'], df['weight'])plt.xlabel('Height')plt.ylabel('Weight')plt.show()

24. 数据可视化-折线图

使用Matplotlib或Seaborn绘制折线图。

语法

plt.plot(df['x'], df['y'])

案例

df = pd.read_csv('data.csv')plt.plot(df['date'], df['sales'])plt.xlabel('Date')plt.ylabel('Sales')plt.show()

25. 数据可视化-柱状图

使用Matplotlib或Seaborn绘制柱状图。

语法

plt.bar(df['x'], df['y'])

案例

df = pd.read_csv('data.csv')plt.bar(df['category'], df['value'])plt.xlabel('Category')plt.ylabel('Value')plt.show()

26. 数据可视化-饼图

使用Matplotlib绘制饼图。

语法

plt.pie(df['values'], labels=df['labels'])

案例

df = pd.read_csv('data.csv')plt.pie(df['sales'], labels=df['region'], autopct='%1.1f%%')plt.title('Sales Distribution by Region')plt.show()

27. 数据可视化-箱线图

使用Seaborn绘制箱线图,用于显示数据的分布和异常值。

语法

sns.boxplot(x='category', y='value', data=df)

案例

df = pd.read_csv('data.csv')sns.boxplot(x='region', y='sales', data=df)plt.title('Sales Distribution by Region')plt.show()

28. 数据可视化-热力图

使用Seaborn绘制热力图,用于显示数据矩阵的强度。

语法

sns.heatmap(df, annot=True, cmap='YlGnBu')

案例

df = pd.read_csv('data.csv')corr_matrix = df.corr()sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')plt.title('Correlation Heatmap')plt.show()

29. 数据可视化-小提琴图

使用Seaborn绘制小提琴图,用于显示数据分布的密度。

语法

sns.violinplot(x='category', y='value', data=df)

案例

df = pd.read_csv('data.csv')sns.violinplot(x='region', y='sales', data=df)plt.title('Sales Distribution by Region')plt.show()

30. 数据可视化-配对图

使用Seaborn绘制配对图,用于显示多个变量之间的关系。

语法

sns.pairplot(df)

案例

df = pd.read_csv('data.csv')sns.pairplot(df[['age', 'height', 'weight']])plt.show()

31. 数据标准化

对数据进行标准化处理,使其均值为0,标准差为1。

语法

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaled_data = scaler.fit_transform(df[['column']])

案例

from sklearn.preprocessing import StandardScalerdf = pd.read_csv('data.csv')scaler = StandardScaler()df[['scaled_column']] = scaler.fit_transform(df[['column']])print(df.head())

32. 数据归一化

对数据进行归一化处理,将数据缩放到[0, 1]区间。

语法

from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()normalized_data = scaler.fit_transform(df[['column']])

案例

from sklearn.preprocessing import MinMaxScalerdf = pd.read_csv('data.csv')scaler = MinMaxScaler()df[['normalized_column']] = scaler.fit_transform(df[['column']])print(df.head())

33. 数据拆分-训练集与测试集

将数据集拆分为训练集和测试集,用于模型训练和评估。

语法

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

案例

from sklearn.model_selection import train_test_splitdf = pd.read_csv('data.csv')X = df[['feature1', 'feature2']]y = df['target']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)print(X_train.shape, X_test.shape)

34. 特征选择

选择对模型预测最有用的特征。

语法

from sklearn.feature_selection import SelectKBest, f_classifselector = SelectKBest(score_func=f_classif, k=2)fit = selector.fit(X, y)

案例

from sklearn.feature_selection import SelectKBest, f_classifdf = pd.read_csv('data.csv')X = df[['feature1', 'feature2', 'feature3']]y = df['target']selector = SelectKBest(score_func=f_classif, k=2)fit = selector.fit(X, y)selected_features = fit.transform(X)print(selected_features[:5])

35. 特征编码-独热编码

将分类特征转换为独热编码格式。

语法

from sklearn.preprocessing import OneHotEncoderencoder = OneHotEncoder()encoded_data = encoder.fit_transform(df[['category']]).toarray()

案例

from sklearn.preprocessing import OneHotEncoderdf = pd.read_csv('data.csv')encoder = OneHotEncoder()encoded_data = encoder.fit_transform(df[['category']]).toarray()print(encoded_data[:5])

36. 特征编码-标签编码

将分类特征转换为整数标签。

语法

from sklearn.preprocessing import LabelEncoderencoder = LabelEncoder()encoded_labels = encoder.fit_transform(df['category'])

案例

from sklearn.preprocessing import LabelEncoderdf = pd.read_csv('data.csv')encoder = LabelEncoder()df['encoded_category'] = encoder.fit_transform(df['category'])print(df.head())

37. 数据降维-PCA

使用主成分分析(PCA)进行数据降维。

语法

from sklearn.decomposition import PCApca = PCA(n_components=2)reduced_data = pca.fit_transform(df)

案例

from sklearn.decomposition import PCAdf = pd.read_csv('data.csv')pca = PCA(n_components=2)reduced_data = pca.fit_transform(df[['feature1', 'feature2', 'feature3']])print(reduced_data[:5])

38. 数据分桶

将连续数据分成离散的区间或“桶”。

语法

pd.cut(df['column'], bins=3)

案例

df = pd.read_csv('data.csv')df['binned_column'] = pd.cut(df['value'], bins=[0, 50, 100, 150])print(df.head())

39. 数据插值

使用插值方法填补缺失值。

语法

df.interpolate(method='linear')

案例

df = pd.read_csv('data.csv')df['value'] = df['value'].interpolate(method='linear')print(df.head())

40. 数据合并-连接

将多个DataFrame通过索引或列进行连接。

语法

pd.concat([df1, df2], axis=1)

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')concat_df = pd.concat([df1, df2], axis=1)print(concat_df.head())

41. 数据合并-连接

将多个DataFrame通过特定的列进行连接。

语法

pd.merge(df1, df2, on='key')

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')merged_df = pd.merge(df1, df2, on='id')print(merged_df.head())

42. 数据转换-堆叠

将DataFrame的列转换为行。

语法

df.stack()

案例

df = pd.read_csv('data.csv')stacked_df = df.stack()print(stacked_df.head())

43. 数据转换-拆分

将DataFrame的行转换为列。

语法

df.unstack()

案例

df = pd.read_csv('data.csv')unstacked_df = df.unstack()print(unstacked_df.head())

44. 数据清洗-去除空白字符

去除DataFrame中字符串数据的前后空白字符。

语法

df['column'] = df['column'].str.strip()

案例

df = pd.read_csv('data.csv')df['name'] = df['name'].str.strip()print(df.head())

45. 数据清洗-字符替换

在字符串数据中替换特定字符。

语法

df['column'] = df['column'].str.replace('old_value', 'new_value')

案例

df = pd.read_csv('data.csv')df['address'] = df['address'].str.replace('Street', 'St.')print(df.head())

46. 数据清洗-正则表达式提取

使用正则表达式从字符串中提取匹配的模式。

语法

df['column'] = df['column'].str.extract(r'pattern')

案例

df = pd.read_csv('data.csv')df['phone_number'] = df['contact'].str.extract(r'\d机器学习-\d机器学习-\d{4}')print(df.head())

47. 数据清洗-字符串分割

将字符串数据按指定分隔符分割成多个列。

语法

df[['column1', 'column2']] = df['column'].str.split('delimiter', expand=True)

案例

df = pd.read_csv('data.csv')df[['first_name', 'last_name']] = df['full_name'].str.split(' ', expand=True)print(df.head())

48. 数据处理-日期解析

将字符串转换为日期时间格式。

语法

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

案例

df = pd.read_csv('data.csv')df['date'] = pd.to_datetime(df['date'])print(df.head())

49. 数据处理-日期提取

从日期时间列中提取年、月、日等信息。

语法

df['year'] = df['date_column'].dt.yeardf['month'] = df['date_column'].dt.month

案例

df = pd.read_csv('data.csv')df['date'] = pd.to_datetime(df['date'])df['year'] = df['date'].dt.yeardf['month'] = df['date'].dt.monthprint(df.head())

50. 数据处理-时间差计算

计算两个日期之间的时间差。

语法

df['time_diff'] = df['end_date'] - df['start_date']

案例

df = pd.read_csv('data.csv')df['start_date'] = pd.to_datetime(df['start_date'])df['end_date'] = pd.to_datetime(df['end_date'])df['time_diff'] = df['end_date'] - df['start_date']print(df.head())

51. 数据处理-滚动窗口

对DataFrame进行滚动窗口计算。

语法

df['rolling_mean'] = df['column'].rolling(window=3).mean()

案例

df = pd.read_csv('data.csv')df['rolling_mean'] = df['sales'].rolling(window=7).mean()print(df.head())

52. 数据处理-滑动窗口

对DataFrame进行滑动窗口计算,用于计算滑动统计量。

语法

df['moving_avg'] = df['column'].rolling(window=7).mean()

案例

df = pd.read_csv('data.csv')df['moving_avg'] = df['temperature'].rolling(window=7).mean()print(df.head())

53. 数据处理-分组统计

对DataFrame按指定列进行分组并计算统计量。

语法

df.groupby('column').agg({'value_column': 'mean'})

案例

df = pd.read_csv('data.csv')grouped_df = df.groupby('department').agg({'salary': 'mean', 'bonus': 'sum'})print(grouped_df)

54. 数据处理-数据透视表

使用数据透视表进行数据汇总和分析。

语法

df.pivot_table(values='value_column', index='index_column', columns='columns_column', aggfunc='mean')

案例

df = pd.read_csv('data.csv')pivot_table = df.pivot_table(values='sales', index='region', columns='product', aggfunc='sum')print(pivot_table)

55. 数据处理-堆叠数据

将DataFrame的列数据堆叠到行中。

语法

df_stacked = df.stack()

案例

df = pd.read_csv('data.csv')df_stacked = df.stack()print(df_stacked.head())

56. 数据处理-解除堆叠

将堆叠的数据恢复到原来的列结构。

语法

df_unstacked = df.unstack()

案例

df = pd.read_csv('data.csv')df_stacked = df.stack()df_unstacked = df_stacked.unstack()print(df_unstacked.head())

57. 数据处理-数据透视表

创建数据透视表以总结数据。

语法

pd.pivot_table(df, values='value_column', index='index_column', columns='columns_column', aggfunc='mean')

案例

df = pd.read_csv('data.csv')pivot_table = pd.pivot_table(df, values='sales', index='region', columns='product', aggfunc='sum')print(pivot_table)

58. 数据处理-序列化存储

将DataFrame序列化并存储到文件中。

语法

df.to_pickle('filename.pkl')

案例

df = pd.read_csv('data.csv')df.to_pickle('data.pkl')

59. 数据处理-从序列化读取

从序列化文件中读取DataFrame。

语法

df = pd.read_pickle('filename.pkl')

案例

df = pd.read_pickle('data.pkl')print(df.head())

60. 数据处理-合并数据

将多个DataFrame通过列或行进行合并。

语法

pd.concat([df1, df2], axis=0)

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')combined_df = pd.concat([df1, df2], axis=0)print(combined_df.head())

61. 数据处理-多表连接

将多个DataFrame通过键进行连接。

语法

pd.merge(df1, df2, on='key')

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')merged_df = pd.merge(df1, df2, on='id')print(merged_df.head())

62. 数据处理-插入列

向DataFrame中插入新列。

语法

df['new_column'] = values

案例

df = pd.read_csv('data.csv')df['new_column'] = df['existing_column'] * 2print(df.head())

63. 数据处理-删除列

从DataFrame中删除列。

语法

df.drop(columns=['column_name'], inplace=True)

案例

df = pd.read_csv('data.csv')df.drop(columns=['unnecessary_column'], inplace=True)print(df.head())

64. 数据处理-填充缺失值

填充DataFrame中的缺失值。

语法

df.fillna(value, inplace=True)

案例

df = pd.read_csv('data.csv')df.fillna(0, inplace=True)print(df.head())

65. 数据处理-替换值

用指定值替换DataFrame中的特定值。

语法

df.replace(to_replace, value, inplace=True)

案例

df = pd.read_csv('data.csv')df.replace({'A': 1, 'B': 2}, inplace=True)print(df.head())

66. 数据处理-删除行

根据条件删除DataFrame中的行。

语法

df.drop(index=indices, inplace=True)

案例

df = pd.read_csv('data.csv')df.drop(df[df['value'] < 0].index, inplace=True)print(df.head())

67. 数据处理-重置索引

重置DataFrame的索引,恢复到默认整数索引。

语法

df.reset_index(drop=True, inplace=True)

案例

df = pd.read_csv('data.csv')df = df[df['value'] > 0]df.reset_index(drop=True, inplace=True)print(df.head())

68. 数据处理-排序

对DataFrame按指定列进行排序。

语法

df.sort_values(by='column', ascending=True, inplace=True)

案例

df = pd.read_csv('data.csv')df.sort_values(by='value', ascending=False, inplace=True)print(df.head())

69. 数据处理-合并多个数据源

将多个DataFrame合并成一个数据源。

语法

df = pd.concat([df1, df2, df3], ignore_index=True)

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')df3 = pd.read_csv('data3.csv')combined_df = pd.concat([df1, df2, df3], ignore_index=True)print(combined_df.head())

70. 数据处理-汇总统计

计算DataFrame的汇总统计信息。

语法

df.describe()

案例

df = pd.read_csv('data.csv')print(df.describe())

71. 数据处理-唯一值

获取DataFrame列中的唯一值。

语法

df['column'].unique()

案例

df = pd.read_csv('data.csv')unique_values = df['category'].unique()print(unique_values)

72. 数据处理-计数

计算DataFrame列中每个唯一值的计数。

语法

df['column'].value_counts()

案例

df = pd.read_csv('data.csv')value_counts = df['category'].value_counts()print(value_counts)

73. 数据处理-自定义函数应用

对DataFrame应用自定义函数。

语法

df['column'] = df['column'].apply(custom_function)

案例

def custom_function(x):    return x * 2df = pd.read_csv('data.csv')df['doubled_value'] = df['value'].apply(custom_function)print(df.head())

74. 数据处理-分组计算

对分组数据进行聚合计算。

语法

df.groupby('group_column').agg({'value_column': 'sum'})

案例

df = pd.read_csv('data.csv')grouped_df = df.groupby('department').agg({'salary': 'mean', 'bonus': 'sum'})print(grouped_df)

75. 数据处理-合并和汇总

将多个数据集合并后进行汇总计算。

语法

df_combined = pd.merge(df1, df2, on='key')df_summary = df_combined.groupby('group_column').agg({'value_column': 'sum'})

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')df_combined = pd.merge(df1, df2, on='id')df_summary = df_combined.groupby('region').agg({'sales': 'sum'})print(df_summary)

76. 数据处理-数据类型转换

将DataFrame的列数据类型转换为指定类型。

语法

df['column'] = df['column'].astype(dtype)

案例

df = pd.read_csv('data.csv')df['value'] = df['value'].astype(float)print(df.dtypes)

77. 数据处理-处理时间序列

对时间序列数据进行处理,如重采样、频率转换等。

语法

df.resample('M').mean()

案例

df = pd.read_csv('data.csv', parse_dates=['date'])df.set_index('date', inplace=True)monthly_avg = df.resample('M').mean()print(monthly_avg)

78. 数据处理-降维

对数据进行降维处理,如使用PCA进行降维。

语法

from sklearn.decomposition import PCApca = PCA(n_components=2)reduced_data = pca.fit_transform(df[['feature1', 'feature2']])

案例

from sklearn.decomposition import PCAdf = pd.read_csv('data.csv')pca = PCA(n_components=2)reduced_data = pca.fit_transform(df[['feature1', 'feature2', 'feature3']])print(reduced_data[:5])

79. 数据处理-处理类别特征

将类别特征转换为数值特征以用于建模。

语法

df['category'] = pd.get_dummies(df['category'])

案例

df = pd.read_csv('data.csv')df = pd.get_dummies(df, columns=['category'])print(df.head())

80. 数据处理-多重填充

对缺失值进行多重填充。

语法

df.fillna(method='ffill', inplace=True)df.fillna(method='bfill', inplace=True)

案例

df = pd.read_csv('data.csv')df.fillna(method='ffill', inplace=True)  # 前向填充df.fillna(method='bfill', inplace=True)  # 后向填充print(df.head())

81. 数据处理-特征选择

选择对模型最有用的特征。

语法

from sklearn.feature_selection import SelectKBest, f_classifselector = SelectKBest(score_func=f_classif, k=5)fit = selector.fit(X, y)selected_features = fit.transform(X)

案例

from sklearn.feature_selection import SelectKBest, f_classifdf = pd.read_csv('data.csv')X = df[['feature1', 'feature2', 'feature3']]y = df['target']selector = SelectKBest(score_func=f_classif, k=2)fit = selector.fit(X, y)selected_features = fit.transform(X)print(selected_features[:5])

82. 数据处理-处理异常值

识别和处理数据中的异常值。

语法

df = df[df['value'] < threshold]

案例

df = pd.read_csv('data.csv')df = df[df['value'] < 100]  # 假设100是异常值的阈值print(df.head())

83. 数据处理-对数转换

对数据进行对数转换以减少偏斜。

语法

df['log_value'] = df['value'].apply(lambda x: np.log(x + 1))

案例

import numpy as npdf = pd.read_csv('data.csv')df['log_value'] = df['value'].apply(lambda x: np.log(x + 1))print(df.head())

84. 数据处理-标准化

对数据进行标准化处理,将其转换为均值为0,标准差为1的分布。

语法

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaled_data = scaler.fit_transform(df[['value']])

案例

from sklearn.preprocessing import StandardScalerdf = pd.read_csv('data.csv')scaler = StandardScaler()df[['scaled_value']] = scaler.fit_transform(df[['value']])print(df.head())

85. 数据处理-归一化

对数据进行归一化处理,将其值缩放到指定的范围,通常是[0, 1]。

语法

from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()normalized_data = scaler.fit_transform(df[['value']])

案例

from sklearn.preprocessing import MinMaxScalerdf = pd.read_csv('data.csv')scaler = MinMaxScaler()df[['normalized_value']] = scaler.fit_transform(df[['value']])print(df.head())

86. 数据处理-分箱

将连续数据分割成离散的区间(箱)。

语法

df['binned_column'] = pd.cut(df['value'], bins=3)

案例

df = pd.read_csv('data.csv')df['binned_value'] = pd.cut(df['value'], bins=[0, 10, 20, 30])print(df.head())

87. 数据处理-离群值检测

使用统计方法检测数据中的离群值。

语法

from scipy import statsdf['z_score'] = stats.zscore(df['value'])outliers = df[df['z_score'].abs() > 3]

案例

from scipy import statsdf = pd.read_csv('data.csv')df['z_score'] = stats.zscore(df['value'])outliers = df[df['z_score'].abs() > 3]print(outliers)

88. 数据处理-数据转换

对数据进行各种转换,如对数转换、平方根转换等。

语法

df['log_value'] = np.log(df['value'] + 1)df['sqrt_value'] = np.sqrt(df['value'])

案例

import numpy as npdf = pd.read_csv('data.csv')df['log_value'] = np.log(df['value'] + 1)df['sqrt_value'] = np.sqrt(df['value'])print(df.head())

89. 数据处理-填充前向和后向

使用前向填充和后向填充方法处理缺失值。

语法

df.fillna(method='ffill', inplace=True)  # 前向填充df.fillna(method='bfill', inplace=True)  # 后向填充

案例

df = pd.read_csv('data.csv')df.fillna(method='ffill', inplace=True)  # 前向填充df.fillna(method='bfill', inplace=True)  # 后向填充print(df.head())

90. 数据处理-窗口函数

使用窗口函数对数据进行滚动计算,如计算移动平均。

语法

df['rolling_mean'] = df['value'].rolling(window=3).mean()

案例

df = pd.read_csv('data.csv')df['rolling_mean'] = df['value'].rolling(window=7).mean()print(df.head())

91. 数据处理-累积和

计算累积和或累积产品。

语法

df['cumsum'] = df['value'].cumsum()df['cumprod'] = df['value'].cumprod()

案例

df = pd.read_csv('data.csv')df['cumsum'] = df['value'].cumsum()df['cumprod'] = df['value'].cumprod()print(df.head())

92. 数据处理-多重索引

创建和处理多重索引的DataFrame。

语法

df.set_index(['level1', 'level2'], inplace=True)

案例

df = pd.read_csv('data.csv')df.set_index(['region', 'product'], inplace=True)print(df.head())

93. 数据处理-重塑数据

改变DataFrame的形状,如使用meltpivot方法。

语法

df_melted = pd.melt(df, id_vars=['id'], value_vars=['value1', 'value2'])df_pivot = df_melted.pivot(index='id', columns='variable', values='value')

案例

df = pd.read_csv('data.csv')df_melted = pd.melt(df, id_vars=['id'], value_vars=['value1', 'value2'])df_pivot = df_melted.pivot(index='id', columns='variable', values='value')print(df_pivot.head())

94. 数据处理-数据抽样

从DataFrame中随机抽取样本数据。

语法

df_sample = df.sample(n=5)df_sample = df.sample(frac=0.1)

案例

df = pd.read_csv('data.csv')df_sample = df.sample(n=10)print(df_sample)

95. 数据处理-数据填充

用指定的值或方法填充DataFrame中的缺失值。

语法

df.fillna(value=0, inplace=True)

案例

df = pd.read_csv('data.csv')df.fillna(value={'value': 0}, inplace=True)print(df.head())

96. 数据处理-数据排序

对DataFrame的数据按指定列进行排序。

语法

df.sort_values(by='column', ascending=False, inplace=True)

案例

df = pd.read_csv('data.csv')df.sort_values(by='value', ascending=True, inplace=True)print(df.head())

97. 数据处理-数据重命名

重命名DataFrame的列。

语法

df.rename(columns={'old_name': 'new_name'}, inplace=True)

案例

df = pd.read_csv('data.csv')df.rename(columns={'value': 'new_value'}, inplace=True)print(df.head())

98. 数据处理-计算累计百分比

计算数据的累计百分比。

语法

df['cumulative_percentage'] = df['value'].cumsum() / df['value'].sum() * 100

案例

df = pd.read_csv('data.csv')df['cumulative_percentage'] = df['value'].cumsum() / df['value'].sum() * 100print(df.head())

99. 数据处理-数据合并

将多个DataFrame合并成一个数据集。

语法

df_combined = pd.concat([df1, df2], axis=0, ignore_index=True)

案例

df1 = pd.read_csv('data1.csv')df2 = pd.read_csv('data2.csv')df_combined = pd.concat([df1, df2], axis=0, ignore_index=True)print(df_combined.head())

100. 数据处理-日期和时间操作

处理日期和时间数据,包括转换、提取等操作。

语法

df['date'] = pd.to_datetime(df['date'])df['year'] = df['date'].dt.yeardf['month'] = df['date'].dt.month

案例

df = pd.read_csv('data.csv')df['date'] = pd.to_datetime(df['date'])df['year'] = df['date'].dt.yeardf['month'] = df['date'].dt.monthprint(df.head())

这些是数据分析过程中常用的核心Python操作,大家可以收藏起来,用的时候翻出来看看~