<jupyter_start><jupyter_text>Panda 数据分析常用函数（上）  1. 导入模块<jupyter_code>import pandas as pd
import numpy as np<jupyter_output><empty_output><jupyter_text>2. 创建数据集并读取**创建数据集**<jupyter_code>data = pd.DataFrame({
    "id":np.arange(101,111),                                # np.arange会自动输出范围内的数据，这里会输出101~110的id号。
    "date":pd.date_range(start="20200310",periods=10),      # 输出日期数据，设置周期为10，注意这里的周期数应该与数据条数相等。
    "money":[5,4,65,-10,15,20,35,16,6,20],                  # 设置一个-10的坑，下面会填（好惨，自己给自己挖坑，幸亏不准备跳~）
    "product":['苏打水','可乐','牛肉干','老干妈','菠萝','冰激凌','洗面奶','洋葱','牙膏','薯片'],
    "department":['饮料','饮料','零食','调味品','水果',np.nan,'日用品','蔬菜','日用品','零食'],                # 再设置一个空值的坑
    "origin":['China',' China','America','China','Thailand','China','america','China','China','Japan']     # 再再设置一个america的坑
})
data<jupyter_output><empty_output><jupyter_text>**数据写入和读取**<jupyter_code>data.to_csv("shopping.csv", index=False)
# index = False表示不加索引，否则会多一行索引
data = pd.read_csv("shopping.csv")<jupyter_output><empty_output><jupyter_text>3. 数据查看 **数据集基础信息查询**<jupyter_code># 数据的形状
data.shape
# 所有列的数据类型
data.dtypes

# 某一列的数据类型
# data['id'].dtype      
# 数据的维度
data.ndim
# 行索引
data.index
# 列索引
data.columns
# 查看对象值
data.values<jupyter_output><empty_output><jupyter_text>**数据集集体情况查询**<jupyter_code>data.head() # 显示头部几行（默认5行）
data.tail() # 显示尾部几行（默认5行）
data.info() # 数据集相关信息概览：索引情况、列数据类型、非空值、内存使用情况
data.describe()    # 快速综合统计结果<jupyter_output><empty_output><jupyter_text>4. 数据清洗 **查看异常值**<jupyter_code># 当然，现在这个数据集很小，可以直观地发现异常值
for i in data:
    print(i+": "+str(data[i].unique()))<jupyter_output>id: [101 102 103 104 105 106 107 108 109 110]
date: ['2020-03-10' '2020-03-11' '2020-03-12' '2020-03-13' '2020-03-14'
 '2020-03-15' '2020-03-16' '2020-03-17' '2020-03-18' '2020-03-19']
money: [  5   4  65 -10  15  20  35  16   6]
product: ['苏打水' '可乐' '牛肉干' '老干妈' '菠萝' '冰激凌' '洗面奶' '洋葱' '牙膏' '薯片']
department: ['饮料' '零食' '调味品' '水果' nan '日用品' '蔬菜']
origin: ['China' ' China' 'America' 'Thailand' 'america' 'Japan']<jupyter_text>**空值检测**<jupyter_code>data.isnull()
# data['department'].isnull()  # 查看某一列的空值
# 将空值判断进行汇总，更加直观，ascending默认为True，升序。
data.isnull().sum().sort_values(ascending=False)
# Detect missing values.
# data.isna() 

# Whether each element in the DataFrame is contained in values.
# data.isin()
df = pd.DataFrame({'num_legs': [2, 4], 'num_wings': [2, 0]},
                  index=['falcon', 'dog'])
df.isin([2])<jupyter_output><empty_output><jupyter_text>**空值处理**<jupyter_code># pandas.DataFrame.fillna（value = None，method = None，inplace = False）

# value：用于填充的值，可以是具体值、字典和数组，不能是列表；
# method：填充方法，有 ffill(填充上一个值) 和 bfill（填充下一个值） 等；
# inplace默认无False，如果为True，则将修改此对象上的所有其他视图。

data['department'].fillna(method="bfill")
# 替换为具体值，并且在原对象值上进行修改
# data['department'].fillna(value="冷冻食品",inplace=True)<jupyter_output><empty_output><jupyter_text>**空格处理**<jupyter_code>for i in data:
    if pd.api.types.is_object_dtype(data[i]):
        data[i] = data[i].str.strip()
data['origin'].unique()<jupyter_output><empty_output><jupyter_text>**大小写转换**<jupyter_code># data['origin'].str.title()         # 将首字母大写
# data['origin'].str.capitalize()    # 将首字母大写
# data['origin'].str.upper()         # 全部大写
# data['origin'].str.lower()         # 全部小写<jupyter_output><empty_output><jupyter_text>**数据替换**<jupyter_code># 将 America 替换为 America
data['origin'].replace("america", "America", inplace=True)
data['origin']
data['money'].replace(-10,np.nan,inplace=True)                    # 将负值替换为空值
data['money'].replace(np.nan,data['money'].mean(),inplace=True)   # 将空值替换为均值
data['money']<jupyter_output><empty_output><jupyter_text>**数据删除(方法一)**<jupyter_code>#去掉 origin 为 American 的行
data1 = data[data.origin != 'America']
data1
#去掉所有包含Japan的行    不等于Japan的行为真，则返回
data2=data[(data != 'Japan').all(1)]    
data2<jupyter_output>/home/js/pyEnvs/tf_cpu/lib/python3.6/site-packages/pandas/core/ops/__init__.py:1115: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  result = method(y)<jupyter_text>**数据删除(方法2)**<jupyter_code># # 默认删除后面出现的重复值，即保留第一次出现的重复值
data['origin'].drop_duplicates()

# 删除前面出现的重复值，即保留最后一次出现的重复值
# data['origin'].drop_duplicates(keep='last')
data<jupyter_output><empty_output><jupyter_text>**数据格式转换**<jupyter_code>data3 = data['id'].astype('str')    # 将id列的类型转换为字符串类型。<jupyter_output><empty_output><jupyter_text>**更改列名称**<jupyter_code>data4 = data.rename(columns={'id':'ID', 'origin':'产地'})     # 将id列改为ID，将origin改为产地。
data4<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.19397697077059345, 'fraction_numerical': 0.043401240035429584, 'mean_word_length': 6.297253634894992, 'pattern_counts': {'":': 7, '<': 59, '<?xml version=': 0, '>': 59, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '15', 'dir': 'jupyter-structured-clean-dedup', 'id': '71067', 'license': 'MIT', 'n_tokens_mistral': 2407, 'n_tokens_neox': 2432, 'n_words': 233, 'path': 'ML-Base-MOOC/chapt-1 Numpy/Pandas (1).ipynb', 'repo_name': 'NovemberChopin/machine-learning', 'size': '4516'}