Hyhyhyhyhyhyh / data-analysis

Python数据分析
2 stars 1 forks source link

Pandas练习 #4

Open Hyhyhyhyhyhyh opened 4 years ago

Hyhyhyhyhyhyh commented 4 years ago

一、开始了解你的数据

探索Chipotle快餐数据

二、数据过滤与排序

探索2012欧洲杯数据

三、数据分组

探索酒类消费数据

四、Apply函数

探索1960 - 2014 美国犯罪数据

五、合并

探索虚拟姓名数据

raw_data_2 = { 'subject_id': ['4', '5', '6', '7', '8'], 'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}

raw_data_3 = { 'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'], 'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}


# 六、统计
## [探索风速数据](https://github.com/Hyhyhyhyhyhyh/data-analysis/issues/4#issuecomment-582796349)
- 将数据作存储并且设置前三列为合适的索引
- 2061年?我们真的有这一年的数据?创建一个函数并用它去修复这个bug
- 将日期设为索引,注意数据类型,应该是datetime64[ns]
- 对应每一个location,一共有多少数据值缺失
- 对应每一个location,一共有多少完整的数据值
- 对于全体数据,计算风速的平均值
- 创建一个名为loc_stats的数据框去计算并存储每个location的风速最小值,最大值,平均值和标准差
- 创建一个名为day_stats的数据框去计算并存储所有location的风速最小值,最大值,平均值和标准差
- 对于每一个location,计算一月份的平均风速
- 对于数据记录按照年为频率取样
- 对于数据记录按照月为频率取样

# 七、可视化
## [探索泰坦尼克灾难数据](https://github.com/Hyhyhyhyhyhyh/data-analysis/issues/4#issuecomment-582797782)
- 将数据框命名为titanic
- 将PassengerId设置为索引
- 绘制一个展示男女乘客比例的扇形图
- 绘制一个展示船票Fare, 与乘客年龄和性别的散点图
- 有多少人生还?
- 绘制一个展示船票价格的直方图

# 八、创建数据框
## [探索Pokemon数据](https://github.com/Hyhyhyhyhyhyh/data-analysis/issues/4#issuecomment-582802172)
- 创建一个数据字典
- 将数据字典存为一个名叫pokemon的数据框中
- 数据框的列排序是字母顺序,请重新修改为name, type, hp, evolution, pokedex这个顺序
- 添加一个列place['park','street','lake','forest']
- 查看每个列的数据类型
```python
import pandas as pd
#创建一个数据字典
raw_data = {"name": ['Bulbasaur', 'Charmander','Squirtle','Caterpie'],
            "evolution": ['Ivysaur','Charmeleon','Wartortle','Metapod'],
            "type": ['grass', 'fire', 'water', 'bug'],
            "hp": [45, 39, 44, 45],
            "pokedex": ['yes', 'no','yes','no']                        
            }

九、时间序列

探索Apple公司股价数据

十、删除数据

探索Iris纸鸢花数据

Hyhyhyhyhyhyh commented 4 years ago

一、探索Chipotle快餐数据

加载数据

chipo = pd.read_csv('./chipotle.tsv', delimiter='\t')


- 查看前10行内容
```python
# 查看前10行
print(chipo.head(10))

def transform_choice(t): if t is NaN: return None return re_obj.sub('', t) top_choice = chipo['choice_description'].apply(transform_choice) top_choice = top_choice.ravel().tolist() result = [] for i in top_choice: if i: result.extend(i.split(','))

c = Counter(result) c.most_common(1) ''' top_choice = chipo['choice_description'].value_counts()[:1].index.tolist()[0] chipo[chipo.choice_description == top_choice]['item_name'].unique()


- 一共有多少商品被下单?
```python
print('一共有多少商品被下单:', chipo['quantity'].sum())
Hyhyhyhyhyhyh commented 4 years ago

二、探索2012欧洲杯数据

Hyhyhyhyhyhyh commented 4 years ago

三、探索酒类消费数据

Hyhyhyhyhyhyh commented 4 years ago

四、探索1960 - 2014 美国犯罪数据

Hyhyhyhyhyhyh commented 4 years ago

五、探索虚拟姓名数据

raw_data_2 = { 'subject_id': ['4', '5', '6', '7', '8'], 'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}

raw_data_3 = { 'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'], 'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}

data1 = pd.DataFrame(raw_data_1) data2 = pd.DataFrame(raw_data_2) data3 = pd.DataFrame(raw_data_3)


- 将data1和data2两个数据框按照行的维度进行合并,命名为all_data
```python
all_data = pd.concat([data1, data2], axis=0)
Hyhyhyhyhyhyh commented 4 years ago

六、探索风速数据

a = np.loadtxt('./wind.csv', skiprows=1)

wind = pd.DataFrame(a, columns=['Yr', 'Mo', 'Dy', 'RPT', 'VAL', 'ROS', 'KIL', 'SHA', 'BIR', 'DUB', 'CLA', 'MUL', 'CLO', 'BEL', 'MAL']) del a

将数据作存储并且设置前三列为合适的索引

wind['date'] = wind['Yr'].astype(int).astype(str).str.cat(wind['Mo'].astype(int).astype(str), sep='-').str.cat(wind['Dy'].astype(int).astype(str), sep='-')

wind['date'] = pd.to_datetime(wind['date'])


- 2061年?我们真的有这一年的数据?创建一个函数并用它去修复这个bug
```python
def transform_date(t):
    if t > pd.to_datetime('2020'):
        return t - pd.Timedelta(days=365*100)
    else:
        return t
wind['date'] = wind['date'].apply(transform_date)
Hyhyhyhyhyhyh commented 4 years ago

七、探索泰坦尼克灾难数据

titanic = pd.read_csv('./train.csv')


- 将PassengerId设置为索引
```python
titanic.set_index('PassengerId', drop=True, inplace=True)

fig = plt.figure(figsize=(16,12)) ax1 = fig.add_subplot(2,2,1) plt.pie( sex, labels=['男性', '女性'], shadow=True, explode=[0, 0.1], startangle=215, textprops={'fontsize': 14}, autopct='%1.1f%%', ) plt.title('乘客性别比例') plt.legend()


- 绘制一个展示船票Fare, 与乘客年龄和性别的散点图
```python
ax2 = fig.add_subplot(2,2,2)
plt.scatter(
    titanic[titanic.Sex == 'male']['Age'],
    titanic[titanic.Sex == 'male']['Fare'],
    color='#5677fc',
    s=10,
    label='男性'
)
plt.scatter(
    titanic[titanic.Sex == 'female']['Age'],
    titanic[titanic.Sex == 'female']['Fare'],
    color='#ff9800',
    s=10,
    label='女性'
)
plt.xlabel('年龄')
plt.ylabel('票价', rotation=0)
plt.title('船票价格与乘客年龄性别关系散点图')
plt.legend()

plt.show()



![无标题](https://user-images.githubusercontent.com/44884619/73921046-97df2500-4901-11ea-8825-8de643535dcc.png)
Hyhyhyhyhyhyh commented 4 years ago

八、探索Pokemon数据

pokemon = pd.DataFrame(raw_data)


- 数据框的列排序是字母顺序,请重新修改为name, type, hp, evolution, pokedex这个顺序
```python
pokemon = pokemon.reindex(columns=['name', 'type', 'hp', 'evolution', 'pokedex'])
Hyhyhyhyhyhyh commented 4 years ago

九、探索Apple公司股价数据

Hyhyhyhyhyhyh commented 4 years ago

十、探索Iris纸鸢花数据

t = np.loadtxt('./iris.data', delimiter=',', dtype='S')


- 创建数据框的列名称['sepal_length','sepal_width', 'petal_length', 'petal_width', 'class']
```python
iris = pd.DataFrame(t, columns=['sepal_length','sepal_width', 'petal_length', 'petal_width', 'class'])

iris.sepal_length = iris.sepal_length.astype(float)
iris.sepal_width = iris.sepal_width.astype(float)
iris.petal_length = iris.petal_length.astype(float)
iris.petal_width = iris.petal_width.astype(float)