Your
first problem is that tb.Apple and tb.Amout are both nil.
If you look at the structure of your table, you would see why this is the case. Your for loop goes through each 'Human' and inserts a table in tb. table.insert inserts the value into the table at the last position in the table, that is to say one space past the last used space in the table. This table contains two values, "Apple" and 0 which are stored at the "Fruit" and "Amount" keys.
Here is a visual representation of your table structure:
tb
1
"Fruit" : "Apple"
"Amount" : 0
2
"Fruit" : "Apple"
"Amount" : 0
3
"Fruit" : "Apple"
"Amount" : 0
4
"Fruit" : "Apple"
"Amount" : 0
etc...
As you can see, tb.Apple and tb.Amount do not exist.
I do not fully understand what output you want, as you don't specify where the values of the fruit are coming from in the example (are they from the calling player?). However, a first step would be to structure your table so you can actually refer to the values. Since table.insert simply assigns each player a number in no meaningful order, you might want to use the player as the key for their fruits table. Then you could do tb.<ply>.Fruit and tb.<ply>.Amount.
Another solution is to use the player's tables themselves. The player variable is a table, so you could do <ply>.Fruit or <ply>.Amount instead.